2023-10-06 07:01:14 +00:00
|
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
2024-05-02 15:59:14 -05:00
|
|
|
import 'package:immich_mobile/services/trash.service.dart';
|
2024-04-30 21:36:40 -05:00
|
|
|
import 'package:immich_mobile/entities/asset.entity.dart';
|
2023-10-06 07:01:14 +00:00
|
|
|
import 'package:logging/logging.dart';
|
|
|
|
|
|
|
|
class TrashNotifier extends StateNotifier<bool> {
|
|
|
|
final TrashService _trashService;
|
|
|
|
final _log = Logger('TrashNotifier');
|
|
|
|
|
|
|
|
TrashNotifier(
|
|
|
|
this._trashService,
|
|
|
|
) : super(false);
|
|
|
|
|
|
|
|
Future<void> emptyTrash() async {
|
|
|
|
try {
|
|
|
|
await _trashService.emptyTrash();
|
2025-02-20 22:14:41 -06:00
|
|
|
state = true;
|
2023-10-06 07:01:14 +00:00
|
|
|
} catch (error, stack) {
|
2024-02-24 04:38:57 +01:00
|
|
|
_log.severe("Cannot empty trash", error, stack);
|
2025-02-20 22:14:41 -06:00
|
|
|
state = false;
|
2023-10-06 07:01:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<bool> restoreAssets(Iterable<Asset> assetList) async {
|
|
|
|
try {
|
2025-02-20 22:14:41 -06:00
|
|
|
await _trashService.restoreAssets(assetList);
|
|
|
|
return true;
|
2023-10-06 07:01:14 +00:00
|
|
|
} catch (error, stack) {
|
2024-02-24 04:38:57 +01:00
|
|
|
_log.severe("Cannot restore assets", error, stack);
|
2025-02-20 22:14:41 -06:00
|
|
|
return false;
|
2023-10-06 07:01:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<void> restoreTrash() async {
|
|
|
|
try {
|
|
|
|
await _trashService.restoreTrash();
|
2025-02-20 22:14:41 -06:00
|
|
|
state = true;
|
2023-10-06 07:01:14 +00:00
|
|
|
} catch (error, stack) {
|
2024-02-24 04:38:57 +01:00
|
|
|
_log.severe("Cannot restore trash", error, stack);
|
2025-02-20 22:14:41 -06:00
|
|
|
state = false;
|
2023-10-06 07:01:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
final trashProvider = StateNotifierProvider<TrashNotifier, bool>((ref) {
|
|
|
|
return TrashNotifier(
|
|
|
|
ref.watch(trashServiceProvider),
|
|
|
|
);
|
|
|
|
});
|