import 'dart:async'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/infrastructure/repositories/remote_asset.repository.dart'; import 'package:immich_mobile/providers/infrastructure/db.provider.dart'; import 'package:immich_mobile/repositories/asset_api.repository.dart'; final actionServiceProvider = Provider( (ref) => ActionService(ref.watch(assetApiRepositoryProvider), ref.watch(driftProvider).remoteAssetRepository), ); class ActionService { final AssetApiRepository _assetApiRepository; final RemoteAssetRepository _remoteAssetRepository; const ActionService(this._assetApiRepository, this._remoteAssetRepository); Future emptyTrash(String userId) async { final count = await _assetApiRepository.emptyTrash(); await _remoteAssetRepository.emptyTrash(userId); return count; } Future restoreAllTrash(String userId) async { final count = await _assetApiRepository.restoreAllTrash(); await _remoteAssetRepository.restoreAllTrash(userId); return count; } Future updateDescription(String assetId, String description) async { // update remote first, then local to ensure consistency await _assetApiRepository.updateDescription(assetId, description); await _remoteAssetRepository.updateDescription(assetId, description); return true; } Future updateRating(String assetId, int? rating) async { // update remote first, then local to ensure consistency await _assetApiRepository.updateRating(assetId, rating); await _remoteAssetRepository.updateRating(assetId, rating); return true; } }