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

@@ -26,6 +26,7 @@ final driftBackupServiceProvider = Provider<DriftBackupService>(
),
);
// TODO: Rename to UploadService after removing Isar
class DriftBackupService {
DriftBackupService(
this._backupRepository,
@@ -56,6 +57,24 @@ class DriftBackupService {
return _backupRepository.getBackupCount(userId);
}
Future<void> manualBackup(List<LocalAsset> localAssets) async {
List<UploadTask> tasks = [];
for (final asset in localAssets) {
final task = await _getUploadTask(
asset,
group: kManualUploadGroup,
priority: 1, // High priority after upload motion photo part
);
if (task != null) {
tasks.add(task);
}
}
if (tasks.isNotEmpty) {
_uploadService.enqueueTasks(tasks);
}
}
Future<void> backup(
String userId,
void Function(EnqueueStatus status) onEnqueueTasks,
@@ -147,7 +166,11 @@ class DriftBackupService {
}
}
Future<UploadTask?> _getUploadTask(LocalAsset asset) async {
Future<UploadTask?> _getUploadTask(
LocalAsset asset, {
String group = kBackupGroup,
int? priority,
}) async {
final entity = await _storageRepository.getAssetEntityForAsset(asset);
if (entity == null) {
return null;
@@ -193,7 +216,8 @@ class DriftBackupService {
originalFileName: originalFileName,
deviceAssetId: asset.id,
metadata: metadata,
group: kBackupGroup,
group: group,
priority: priority,
);
}