mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-12 19:33:41 +00:00
feat(tasks): group extension folder downloads (#1594)
This commit is contained in:
1 parent
fc0a1e0ef9
commit
1e36599d52
84 files changed
+6690
-881
No files matched your search
@@ -23,6 +23,10 @@ class TasksState {
|
||||
final int uploadSpeedBytesPerSecond;
|
||||
final Object? lastError;
|
||||
|
||||
Iterable<TaskRecord> get allTasks => tasks.expand((task) => [task, ...task.members]);
|
||||
|
||||
TaskRecord? findTask(String id) => allTasks.where((task) => task.id == id).firstOrNull;
|
||||
|
||||
TasksState copyWith({
|
||||
List<TaskRecord>? tasks,
|
||||
int? downloadSpeedBytesPerSecond,
|
||||
@@ -122,13 +126,14 @@ class TasksController extends AsyncNotifier<TasksState> {
|
||||
Future<TasksState> _fetch() async {
|
||||
final tasks = await ref.read(gopeedServiceProvider).getTasks(api_model.Status.values);
|
||||
final transferSpeeds = aggregateTaskTransferSpeeds(tasks);
|
||||
tasks.sort((a, b) {
|
||||
if (a.status == api_model.Status.running && b.status != api_model.Status.running) return -1;
|
||||
if (a.status != api_model.Status.running && b.status == api_model.Status.running) return 1;
|
||||
return b.updatedAt.compareTo(a.updatedAt);
|
||||
});
|
||||
return TasksState(
|
||||
tasks: tasks.map(TaskRecord.fromApi).toList(growable: false),
|
||||
tasks: taskRecordsFromApi(tasks)
|
||||
..sort((a, b) {
|
||||
final aRunning = a.status == TaskStatus.downloading && !a.waiting;
|
||||
final bRunning = b.status == TaskStatus.downloading && !b.waiting;
|
||||
if (aRunning != bRunning) return aRunning ? -1 : 1;
|
||||
return (b.updatedAt ?? b.createdAt!).compareTo(a.updatedAt ?? a.createdAt!);
|
||||
}),
|
||||
downloadSpeedBytesPerSecond: transferSpeeds.downloadBytesPerSecond,
|
||||
uploadSpeedBytesPerSecond: transferSpeeds.uploadBytesPerSecond,
|
||||
);
|
||||
|
||||
Reference in new issue
Block a user