chore: refactor upload service (#20130)

* chore: refactor upload service

* fix: cancel upload queue on logout (#20131)

* fix: cancel upload on logout

* fix: test

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>

---------

Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
Alex
2025-07-25 10:09:32 -05:00
committed by GitHub
parent e5ee1c8db6
commit 03a13828e1
13 changed files with 438 additions and 395 deletions

View File

@@ -1,4 +1,5 @@
import 'package:background_downloader/background_downloader.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/constants/constants.dart';
@@ -6,7 +7,6 @@ final uploadRepositoryProvider = Provider((ref) => UploadRepository());
class UploadRepository {
void Function(TaskStatusUpdate)? onUploadStatus;
void Function(TaskProgressUpdate)? onTaskProgress;
UploadRepository() {
@@ -27,11 +27,11 @@ class UploadRepository {
);
}
void enqueueAll(List<UploadTask> tasks) {
void enqueueBackgroundAll(List<UploadTask> tasks) {
FileDownloader().enqueueAll(tasks);
}
Future<void> deleteAllTrackingRecords(String group) {
Future<void> deleteDatabaseRecords(String group) {
return FileDownloader().database.deleteAllRecords(group: group);
}
@@ -42,4 +42,47 @@ class UploadRepository {
Future<int> reset(String group) {
return FileDownloader().reset(group: group);
}
/// Get a list of tasks that are ENQUEUED or RUNNING
Future<List<Task>> getActiveTasks(String group) {
return FileDownloader().allTasks(group: group);
}
Future<void> start() {
return FileDownloader().start();
}
Future<void> getUploadInfo() async {
final [enqueuedTasks, runningTasks, canceledTasks, waitingTasks, pausedTasks] = await Future.wait([
FileDownloader().database.allRecordsWithStatus(
TaskStatus.enqueued,
group: kBackupGroup,
),
FileDownloader().database.allRecordsWithStatus(
TaskStatus.running,
group: kBackupGroup,
),
FileDownloader().database.allRecordsWithStatus(
TaskStatus.canceled,
group: kBackupGroup,
),
FileDownloader().database.allRecordsWithStatus(
TaskStatus.waitingToRetry,
group: kBackupGroup,
),
FileDownloader().database.allRecordsWithStatus(
TaskStatus.paused,
group: kBackupGroup,
),
]);
debugPrint("""
Upload Info:
Enqueued: ${enqueuedTasks.length}
Running: ${runningTasks.length}
Canceled: ${canceledTasks.length}
Waiting: ${waitingTasks.length}
Paused: ${pausedTasks.length}
""");
}
}