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/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);

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/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(