mirror of
https://github.com/immich-app/immich
synced 2025-10-17 18:19:27 +00:00
- add new table trashed_local_asset - mirror trashed assets data in trashed_local_asset. - compute checksums for assets trashed out-of-app. - restore assets present in trashed_local_asset and non-trashed in remote_asset. - simplify moving-to-trash logic based on remote_asset events.
31 lines
1.4 KiB
Dart
31 lines
1.4 KiB
Dart
import 'package:async/async.dart';
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:immich_mobile/domain/services/trash_sync.service.dart';
|
|
import 'package:immich_mobile/providers/app_settings.provider.dart';
|
|
import 'package:immich_mobile/providers/infrastructure/album.provider.dart';
|
|
import 'package:immich_mobile/providers/infrastructure/platform.provider.dart';
|
|
import 'package:immich_mobile/providers/infrastructure/storage.provider.dart';
|
|
import 'package:immich_mobile/repositories/local_files_manager.repository.dart';
|
|
|
|
import 'asset.provider.dart';
|
|
|
|
typedef TrashedAssetsCount = ({int total, int hashed});
|
|
|
|
final trashSyncServiceProvider = Provider(
|
|
(ref) => TrashSyncService(
|
|
appSettingsService: ref.watch(appSettingsServiceProvider),
|
|
nativeSyncApi: ref.watch(nativeSyncApiProvider),
|
|
localAssetRepository: ref.watch(localAssetRepository),
|
|
localAlbumRepository: ref.watch(localAlbumRepository),
|
|
trashedLocalAssetRepository: ref.watch(trashedLocalAssetRepository),
|
|
localFilesManager: ref.watch(localFilesManagerRepositoryProvider),
|
|
storageRepository: ref.watch(storageRepositoryProvider),
|
|
),
|
|
);
|
|
|
|
final trashedAssetsCountProvider = StreamProvider<TrashedAssetsCount>((ref) {
|
|
final repo = ref.watch(trashedLocalAssetRepository);
|
|
final total$ = repo.watchCount();
|
|
final hashed$ = repo.watchHashedCount();
|
|
return StreamZip<int>([total$, hashed$]).map((values) => (total: values[0], hashed: values[1]));
|
|
});
|