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:
parent
b0b18919c3
commit
458ef2f733
3 changed files with 29 additions and 21 deletions
lib
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/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);
|
||||||
|
|
|
@ -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(
|
||||||
|
|
Loading…
Reference in a new issue