immich/mobile/lib/services/action.service.dart

46 lines
1.6 KiB
Dart
Raw Normal View History

import 'dart:async';
import 'package:hooks_riverpod/hooks_riverpod.dart';
2025-06-30 12:21:09 -05:00
import 'package:immich_mobile/infrastructure/repositories/remote_asset.repository.dart';
import 'package:immich_mobile/providers/infrastructure/asset.provider.dart';
2025-06-30 12:21:09 -05:00
import 'package:immich_mobile/repositories/asset_api.repository.dart';
final actionServiceProvider = Provider<ActionService>(
(ref) => ActionService(ref.watch(assetApiRepositoryProvider), ref.watch(remoteAssetRepositoryProvider)),
2025-06-30 12:21:09 -05:00
);
class ActionService {
final AssetApiRepository _assetApiRepository;
final RemoteAssetRepository _remoteAssetRepository;
2025-06-30 12:21:09 -05:00
const ActionService(this._assetApiRepository, this._remoteAssetRepository);
2025-06-30 12:21:09 -05:00
Future<int> emptyTrash(String userId) async {
final count = await _assetApiRepository.emptyTrash();
await _remoteAssetRepository.emptyTrash(userId);
return count;
}
Future<int> restoreAllTrash(String userId) async {
final count = await _assetApiRepository.restoreAllTrash();
await _remoteAssetRepository.restoreAllTrash(userId);
return count;
}
Future<bool> 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<bool> 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;
}
2025-06-30 12:21:09 -05:00
}