fix(mobile): asset state when delete from trash (#6476)

* fix(mobile): handle asset removal state from trash for merged assets

* fix(mobile): use appropriate text for trash / delete

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
shenlong 2024-01-18 20:55:19 +00:00 committed by GitHub
parent 660b2e908d
commit 04c783f2f0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 47 additions and 14 deletions

View file

@ -2,6 +2,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
import 'package:immich_mobile/modules/trash/services/trash.service.dart';
import 'package:immich_mobile/shared/models/asset.dart';
import 'package:immich_mobile/shared/providers/asset.provider.dart';
import 'package:immich_mobile/shared/providers/db.provider.dart';
import 'package:immich_mobile/shared/providers/user.provider.dart';
import 'package:immich_mobile/shared/services/sync.service.dart';
@ -47,6 +48,33 @@ class TrashNotifier extends StateNotifier<bool> {
}
}
Future<bool> removeAssets(Iterable<Asset> assetList) async {
try {
final user = _ref.read(currentUserProvider);
if (user == null) {
return false;
}
final isRemoved = await _ref
.read(assetProvider.notifier)
.deleteRemoteOnlyAssets(assetList, force: true);
if (isRemoved) {
final idsToRemove =
assetList.where((a) => a.isRemote).map((a) => a.remoteId!).toList();
_ref
.read(syncServiceProvider)
.handleRemoteAssetRemoval(idsToRemove.cast<String>().toList());
}
return isRemoved;
} catch (error, stack) {
_log.severe("Cannot empty trash ${error.toString()}", error, stack);
}
return false;
}
Future<bool> restoreAssets(Iterable<Asset> assetList) async {
try {
final result = await _trashService.restoreAssets(assetList);