mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-02 06:46:22 +01:00
Refactoring: extract add items to album
This commit is contained in:
parent
b0b18919c3
commit
458ef2f733
3 changed files with 29 additions and 21 deletions
24
lib/use_case/add_to_album.dart
Normal file
24
lib/use_case/add_to_album.dart
Normal file
|
@ -0,0 +1,24 @@
|
|||
import 'package:nc_photos/account.dart';
|
||||
import 'package:nc_photos/entity/album.dart';
|
||||
import 'package:nc_photos/entity/album/item.dart';
|
||||
import 'package:nc_photos/entity/album/provider.dart';
|
||||
import 'package:nc_photos/use_case/update_album.dart';
|
||||
|
||||
class AddToAlbum {
|
||||
AddToAlbum(this.albumRepo);
|
||||
|
||||
/// Add a list of AlbumItems to [album]
|
||||
Future<void> call(Account account, Album album, List<AlbumItem> items) =>
|
||||
UpdateAlbum(albumRepo)(
|
||||
account,
|
||||
album.copyWith(
|
||||
provider: AlbumStaticProvider(
|
||||
items: makeDistinctAlbumItems([
|
||||
...items,
|
||||
...AlbumStaticProvider.of(album).items,
|
||||
]),
|
||||
),
|
||||
));
|
||||
|
||||
final AlbumRepo albumRepo;
|
||||
}
|
|
@ -31,8 +31,8 @@ import 'package:nc_photos/primitive.dart';
|
|||
import 'package:nc_photos/share_handler.dart';
|
||||
import 'package:nc_photos/snack_bar_manager.dart';
|
||||
import 'package:nc_photos/theme.dart';
|
||||
import 'package:nc_photos/use_case/add_to_album.dart';
|
||||
import 'package:nc_photos/use_case/remove.dart';
|
||||
import 'package:nc_photos/use_case/update_album.dart';
|
||||
import 'package:nc_photos/use_case/update_property.dart';
|
||||
import 'package:nc_photos/widget/album_picker_dialog.dart';
|
||||
import 'package:nc_photos/widget/home_app_bar.dart';
|
||||
|
@ -409,16 +409,7 @@ class _HomePhotosState extends State<HomePhotos>
|
|||
.toList();
|
||||
try {
|
||||
final albumRepo = AlbumRepo(AlbumCachedDataSource());
|
||||
await UpdateAlbum(albumRepo)(
|
||||
widget.account,
|
||||
album.copyWith(
|
||||
provider: AlbumStaticProvider(
|
||||
items: makeDistinctAlbumItems([
|
||||
...selected,
|
||||
...AlbumStaticProvider.of(album).items,
|
||||
]),
|
||||
),
|
||||
));
|
||||
await AddToAlbum(albumRepo)(widget.account, album, selected);
|
||||
} catch (e, stacktrace) {
|
||||
_log.shout(
|
||||
"[_addSelectedToAlbum] Failed while updating album", e, stacktrace);
|
||||
|
|
|
@ -27,6 +27,7 @@ import 'package:nc_photos/platform/features.dart' as features;
|
|||
import 'package:nc_photos/platform/k.dart' as platform_k;
|
||||
import 'package:nc_photos/snack_bar_manager.dart';
|
||||
import 'package:nc_photos/theme.dart';
|
||||
import 'package:nc_photos/use_case/add_to_album.dart';
|
||||
import 'package:nc_photos/use_case/update_album.dart';
|
||||
import 'package:nc_photos/use_case/update_property.dart';
|
||||
import 'package:nc_photos/widget/album_picker_dialog.dart';
|
||||
|
@ -503,16 +504,8 @@ class _ViewerDetailPaneState extends State<ViewerDetailPane> {
|
|||
));
|
||||
return Future.error(ArgumentError("File already in album"));
|
||||
}
|
||||
await UpdateAlbum(albumRepo)(
|
||||
widget.account,
|
||||
album.copyWith(
|
||||
provider: AlbumStaticProvider(
|
||||
items: [
|
||||
AlbumFileItem(file: widget.file),
|
||||
...AlbumStaticProvider.of(album).items,
|
||||
],
|
||||
),
|
||||
));
|
||||
await AddToAlbum(albumRepo)(
|
||||
widget.account, album, [AlbumFileItem(file: widget.file)]);
|
||||
} catch (e, stacktrace) {
|
||||
_log.shout("[_addToAlbum] Failed while updating album", e, stacktrace);
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
|
|
Loading…
Reference in a new issue