feat: drift manual upload (#20101)

This commit is contained in:
Alex
2025-07-23 09:20:52 -05:00
committed by GitHub
parent 08122d6871
commit 1a35a01149
14 changed files with 114 additions and 9 deletions

View File

@@ -5,6 +5,7 @@ import 'package:immich_mobile/providers/infrastructure/asset_viewer/current_asse
import 'package:immich_mobile/providers/timeline/multiselect.provider.dart';
import 'package:immich_mobile/providers/user.provider.dart';
import 'package:immich_mobile/services/action.service.dart';
import 'package:immich_mobile/services/drift_backup.service.dart';
import 'package:immich_mobile/services/timeline.service.dart';
import 'package:logging/logging.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
@@ -32,12 +33,14 @@ class ActionResult {
class ActionNotifier extends Notifier<void> {
final Logger _logger = Logger('ActionNotifier');
late ActionService _service;
late DriftBackupService _backupService;
ActionNotifier() : super();
@override
void build() {
_service = ref.watch(actionServiceProvider);
_backupService = ref.watch(driftBackupServiceProvider);
}
List<String> _getRemoteIdsForSource(ActionSource source) {
@@ -368,6 +371,21 @@ class ActionNotifier extends Notifier<void> {
);
}
}
Future<ActionResult> upload(ActionSource source) async {
final assets = _getAssets(source).whereType<LocalAsset>().toList();
try {
await _backupService.manualBackup(assets);
return ActionResult(count: assets.length, success: true);
} catch (error, stack) {
_logger.severe('Failed manually upload assets', error, stack);
return ActionResult(
count: assets.length,
success: false,
error: error.toString(),
);
}
}
}
extension on Iterable<RemoteAsset> {