mirror of
https://github.com/immich-app/immich
synced 2026-08-15 13:03:57 +00:00
refactor: mobile tag and download action Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
45 lines
1.6 KiB
Dart
45 lines
1.6 KiB
Dart
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/asset.provider.dart';
|
|
import 'package:immich_mobile/repositories/asset_api.repository.dart';
|
|
|
|
final actionServiceProvider = Provider<ActionService>(
|
|
(ref) => ActionService(ref.watch(assetApiRepositoryProvider), ref.watch(remoteAssetRepositoryProvider)),
|
|
);
|
|
|
|
class ActionService {
|
|
final AssetApiRepository _assetApiRepository;
|
|
final RemoteAssetRepository _remoteAssetRepository;
|
|
|
|
const ActionService(this._assetApiRepository, this._remoteAssetRepository);
|
|
|
|
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;
|
|
}
|
|
}
|