mirror of
https://github.com/lifegpc/eh_downloader_flutter.git
synced 2026-07-08 01:30:28 +08:00
add task manager
This commit is contained in:
@@ -271,6 +271,19 @@ class EHApi extends __EHApi {
|
||||
return newUri.toString();
|
||||
}
|
||||
|
||||
Uri getTaskUrl() {
|
||||
final uri = Uri.parse(_combineBaseUrls(_dio.options.baseUrl, baseUrl));
|
||||
final nuri = uri.resolve("task");
|
||||
return Uri(
|
||||
scheme: uri.scheme == "https" ? "wss" : "ws",
|
||||
userInfo: nuri.userInfo,
|
||||
host: nuri.host,
|
||||
port: nuri.port,
|
||||
path: nuri.path,
|
||||
query: nuri.query,
|
||||
);
|
||||
}
|
||||
|
||||
String getThumbnailUrl(int id,
|
||||
{int? max,
|
||||
int? width,
|
||||
|
||||
@@ -138,11 +138,11 @@ class TaskProgress {
|
||||
const TaskProgress({
|
||||
required this.type,
|
||||
required this.taskId,
|
||||
required this.progress,
|
||||
required this.detail,
|
||||
});
|
||||
final TaskType type;
|
||||
final int taskId;
|
||||
final TaskProgressBasicType progress;
|
||||
final TaskProgressBasicType detail;
|
||||
factory TaskProgress.fromJson(Map<String, dynamic> json) {
|
||||
final type = json['type'] as int;
|
||||
final taskId = json['task_id'] as int;
|
||||
@@ -151,29 +151,29 @@ class TaskProgress {
|
||||
return TaskProgress(
|
||||
type: TaskType.download,
|
||||
taskId: taskId,
|
||||
progress: TaskDownloadProgess.fromJson(
|
||||
json['progress'] as Map<String, dynamic>),
|
||||
detail: TaskDownloadProgess.fromJson(
|
||||
json['detail'] as Map<String, dynamic>),
|
||||
);
|
||||
case 1:
|
||||
return TaskProgress(
|
||||
type: TaskType.exportZip,
|
||||
taskId: taskId,
|
||||
progress: TaskExportZipProgress.fromJson(
|
||||
json['progress'] as Map<String, dynamic>),
|
||||
detail: TaskExportZipProgress.fromJson(
|
||||
json['detail'] as Map<String, dynamic>),
|
||||
);
|
||||
case 2:
|
||||
return TaskProgress(
|
||||
type: TaskType.updateMeiliSearchData,
|
||||
taskId: taskId,
|
||||
progress: TaskUpdateMeiliSearchDataProgress.fromJson(
|
||||
json['progress'] as Map<String, dynamic>),
|
||||
detail: TaskUpdateMeiliSearchDataProgress.fromJson(
|
||||
json['detail'] as Map<String, dynamic>),
|
||||
);
|
||||
case 3:
|
||||
return TaskProgress(
|
||||
type: TaskType.fixGalleryPage,
|
||||
taskId: taskId,
|
||||
progress: TaskFixGalleryPageProgress.fromJson(
|
||||
json['progress'] as Map<String, dynamic>),
|
||||
detail: TaskFixGalleryPageProgress.fromJson(
|
||||
json['detail'] as Map<String, dynamic>),
|
||||
);
|
||||
default:
|
||||
throw ArgumentError.value(type, 'type', 'Invalid task type');
|
||||
@@ -200,9 +200,37 @@ class TaskDetail {
|
||||
this.error,
|
||||
this.fataled,
|
||||
});
|
||||
final Task base;
|
||||
Task base;
|
||||
TaskProgressBasicType? progress;
|
||||
TaskStatus status;
|
||||
String? error;
|
||||
bool? fataled;
|
||||
}
|
||||
|
||||
@JsonSerializable()
|
||||
class TaskList {
|
||||
const TaskList({
|
||||
required this.tasks,
|
||||
required this.running,
|
||||
});
|
||||
final List<Task> tasks;
|
||||
final List<int> running;
|
||||
factory TaskList.fromJson(Map<String, dynamic> json) =>
|
||||
_$TaskListFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$TaskListToJson(this);
|
||||
}
|
||||
|
||||
@JsonSerializable()
|
||||
class TaskError {
|
||||
const TaskError({
|
||||
required this.task,
|
||||
required this.error,
|
||||
required this.fatal,
|
||||
});
|
||||
final Task task;
|
||||
final String error;
|
||||
final bool fatal;
|
||||
factory TaskError.fromJson(Map<String, dynamic> json) =>
|
||||
_$TaskErrorFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$TaskErrorToJson(this);
|
||||
}
|
||||
|
||||
@@ -120,3 +120,27 @@ Map<String, dynamic> _$TaskFixGalleryPageProgressToJson(
|
||||
'total_gallery': instance.totalGallery,
|
||||
'checked_gallery': instance.checkedGallery,
|
||||
};
|
||||
|
||||
TaskList _$TaskListFromJson(Map<String, dynamic> json) => TaskList(
|
||||
tasks: (json['tasks'] as List<dynamic>)
|
||||
.map((e) => Task.fromJson(e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
running: (json['running'] as List<dynamic>).map((e) => e as int).toList(),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$TaskListToJson(TaskList instance) => <String, dynamic>{
|
||||
'tasks': instance.tasks,
|
||||
'running': instance.running,
|
||||
};
|
||||
|
||||
TaskError _$TaskErrorFromJson(Map<String, dynamic> json) => TaskError(
|
||||
task: Task.fromJson(json['task'] as Map<String, dynamic>),
|
||||
error: json['error'] as String,
|
||||
fatal: json['fatal'] as bool,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$TaskErrorToJson(TaskError instance) => <String, dynamic>{
|
||||
'task': instance.task,
|
||||
'error': instance.error,
|
||||
'fatal': instance.fatal,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user