Use moveFromCurrentCollection during unfav action

This commit is contained in:
Neeraj Gupta 2023-01-12 23:52:14 +05:30
parent d0cecf5946
commit 1b53a53b58
No known key found for this signature in database
GPG key ID: 3C5A1684DC1729E1
3 changed files with 26 additions and 12 deletions

View file

@ -14,11 +14,14 @@ import 'package:photos/models/collection.dart';
import 'package:photos/models/file.dart';
import 'package:photos/services/collections_service.dart';
import 'package:photos/services/remote_sync_service.dart';
import 'package:photos/ui/actions/collection/collection_sharing_actions.dart';
import 'package:photos/utils/crypto_util.dart';
class FavoritesService {
late Configuration _config;
late CollectionsService _collectionsService;
late CollectionActions _collectionActions;
late FilesDB _filesDB;
int? _cachedFavoritesCollectionID;
final Set<int> _cachedFavUploadedIDs = {};
@ -26,9 +29,11 @@ class FavoritesService {
late StreamSubscription<CollectionUpdatedEvent>
_collectionUpdatesSubscription;
FavoritesService._privateConstructor() {
FavoritesService._privateConstructor() {}
Future<void> initFav() async {
_config = Configuration.instance;
_collectionsService = CollectionsService.instance;
_collectionActions = CollectionActions(_collectionsService);
_filesDB = FilesDB.instance;
_collectionUpdatesSubscription =
Bus.instance.on<CollectionUpdatedEvent>().listen((event) {
@ -46,8 +51,6 @@ class FavoritesService {
}
}
});
}
Future<void> initFav() async {
await _warmUpCache();
}
@ -120,7 +123,7 @@ class FavoritesService {
}
}
Future<void> addToFavorites(File file) async {
Future<void> addToFavorites(BuildContext context, File file) async {
final collectionID = await _getOrCreateFavoriteCollectionID();
final List<File> files = [file];
if (file.uploadedFileID == null) {
@ -134,7 +137,8 @@ class FavoritesService {
RemoteSyncService.instance.sync(silently: true).ignore();
}
Future<void> updateFavorites(List<File> files, bool favFlag) async {
Future<void> updateFavorites(
BuildContext context, List<File> files, bool favFlag) async {
final int currentUserID = Configuration.instance.getUserID()!;
if (files.any((f) => f.uploadedFileID == null)) {
throw AssertionError("Can only favorite uploaded items");
@ -146,18 +150,27 @@ class FavoritesService {
if (favFlag) {
await _collectionsService.addToCollection(collectionID, files);
} else {
await _collectionsService.removeFromCollection(collectionID, files);
final Collection? favCollection = await _getFavoritesCollection();
await _collectionActions.moveFilesFromCurrentCollection(
context,
favCollection!,
files,
);
}
_updateFavoriteFilesCache(files, favFlag: favFlag);
}
Future<void> removeFromFavorites(File file) async {
final collectionID = await _getOrCreateFavoriteCollectionID();
Future<void> removeFromFavorites(BuildContext context, File file) async {
final fileID = file.uploadedFileID;
if (fileID == null) {
// Do nothing, ignore
} else {
await _collectionsService.removeFromCollection(collectionID, [file]);
final Collection? favCollection = await _getFavoritesCollection();
await _collectionActions.moveFilesFromCurrentCollection(
context,
favCollection!,
[file],
);
}
_updateFavoriteFilesCache([file], favFlag: false);
}

View file

@ -172,7 +172,8 @@ extension CollectionFileActions on CollectionActions {
await dialog.show();
try {
await FavoritesService.instance.updateFavorites(files, markAsFavorite);
await FavoritesService.instance
.updateFavorites(context, files, markAsFavorite);
return true;
} catch (e, s) {
logger.severe(e, s);

View file

@ -312,7 +312,7 @@ class FadingAppBarState extends State<FadingAppBar> {
await dialog.show();
}
try {
await FavoritesService.instance.addToFavorites(file);
await FavoritesService.instance.addToFavorites(context, file);
} catch (e, s) {
_logger.severe(e, s);
hasError = true;
@ -324,7 +324,7 @@ class FadingAppBarState extends State<FadingAppBar> {
}
} else {
try {
await FavoritesService.instance.removeFromFavorites(file);
await FavoritesService.instance.removeFromFavorites(context, file);
} catch (e, s) {
_logger.severe(e, s);
hasError = true;