From 458ef2f7338588bc552ef71a52cce822df0e3cae Mon Sep 17 00:00:00 2001 From: Ming Ming Date: Wed, 8 Sep 2021 16:17:51 +0800 Subject: [PATCH] Refactoring: extract add items to album --- lib/use_case/add_to_album.dart | 24 ++++++++++++++++++++++++ lib/widget/home_photos.dart | 13 ++----------- lib/widget/viewer_detail_pane.dart | 13 +++---------- 3 files changed, 29 insertions(+), 21 deletions(-) create mode 100644 lib/use_case/add_to_album.dart diff --git a/lib/use_case/add_to_album.dart b/lib/use_case/add_to_album.dart new file mode 100644 index 00000000..7948e1c9 --- /dev/null +++ b/lib/use_case/add_to_album.dart @@ -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 call(Account account, Album album, List items) => + UpdateAlbum(albumRepo)( + account, + album.copyWith( + provider: AlbumStaticProvider( + items: makeDistinctAlbumItems([ + ...items, + ...AlbumStaticProvider.of(album).items, + ]), + ), + )); + + final AlbumRepo albumRepo; +} diff --git a/lib/widget/home_photos.dart b/lib/widget/home_photos.dart index 00d22160..c03d057f 100644 --- a/lib/widget/home_photos.dart +++ b/lib/widget/home_photos.dart @@ -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 .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); diff --git a/lib/widget/viewer_detail_pane.dart b/lib/widget/viewer_detail_pane.dart index 85fecc78..21d8d130 100644 --- a/lib/widget/viewer_detail_pane.dart +++ b/lib/widget/viewer_detail_pane.dart @@ -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 { )); 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(