1
0
Fork 0
mirror of https://gitlab.com/nkming2/nc-photos.git synced 2025-03-11 01:38:52 +01:00

Refactoring: extract add items to album

This commit is contained in:
Ming Ming 2021-09-08 16:17:51 +08:00
parent b0b18919c3
commit 458ef2f733
3 changed files with 29 additions and 21 deletions

View 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;
}

View file

@ -31,8 +31,8 @@ import 'package:nc_photos/primitive.dart';
import 'package:nc_photos/share_handler.dart'; import 'package:nc_photos/share_handler.dart';
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/theme.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/remove.dart';
import 'package:nc_photos/use_case/update_album.dart';
import 'package:nc_photos/use_case/update_property.dart'; import 'package:nc_photos/use_case/update_property.dart';
import 'package:nc_photos/widget/album_picker_dialog.dart'; import 'package:nc_photos/widget/album_picker_dialog.dart';
import 'package:nc_photos/widget/home_app_bar.dart'; import 'package:nc_photos/widget/home_app_bar.dart';
@ -409,16 +409,7 @@ class _HomePhotosState extends State<HomePhotos>
.toList(); .toList();
try { try {
final albumRepo = AlbumRepo(AlbumCachedDataSource()); final albumRepo = AlbumRepo(AlbumCachedDataSource());
await UpdateAlbum(albumRepo)( await AddToAlbum(albumRepo)(widget.account, album, selected);
widget.account,
album.copyWith(
provider: AlbumStaticProvider(
items: makeDistinctAlbumItems([
...selected,
...AlbumStaticProvider.of(album).items,
]),
),
));
} catch (e, stacktrace) { } catch (e, stacktrace) {
_log.shout( _log.shout(
"[_addSelectedToAlbum] Failed while updating album", e, stacktrace); "[_addSelectedToAlbum] Failed while updating album", e, stacktrace);

View file

@ -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/platform/k.dart' as platform_k;
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/theme.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_album.dart';
import 'package:nc_photos/use_case/update_property.dart'; import 'package:nc_photos/use_case/update_property.dart';
import 'package:nc_photos/widget/album_picker_dialog.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")); return Future.error(ArgumentError("File already in album"));
} }
await UpdateAlbum(albumRepo)( await AddToAlbum(albumRepo)(
widget.account, widget.account, album, [AlbumFileItem(file: widget.file)]);
album.copyWith(
provider: AlbumStaticProvider(
items: [
AlbumFileItem(file: widget.file),
...AlbumStaticProvider.of(album).items,
],
),
));
} catch (e, stacktrace) { } catch (e, stacktrace) {
_log.shout("[_addToAlbum] Failed while updating album", e, stacktrace); _log.shout("[_addToAlbum] Failed while updating album", e, stacktrace);
SnackBarManager().showSnackBar(SnackBar( SnackBarManager().showSnackBar(SnackBar(