You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.5 KiB
73 lines
1.5 KiB
import {$on} from '../shared'
|
|
import {configApi} from './api'
|
|
import {
|
|
cleanReadTasks,
|
|
getReadTasks,
|
|
pauseReadTask,
|
|
Reader,
|
|
removeReadTask,
|
|
resumeReadTask,
|
|
} from "./reader";
|
|
import {handleNetworkEvent} from "./socket";
|
|
import {
|
|
cleanUploadTasks,
|
|
getUploadTasks,
|
|
pauseUploadTask,
|
|
removeUploadTask,
|
|
resumeUploadTask,
|
|
} from "./uploader";
|
|
|
|
// 取消前端任务
|
|
async function cancel(data: TaskEventData): Promise<void> {
|
|
const {fileHash, taskId} = data;
|
|
await pauseReadTask(taskId);
|
|
await pauseUploadTask(fileHash, taskId);
|
|
}
|
|
|
|
// 恢复任务
|
|
async function resume(data: TaskEventData): Promise<void> {
|
|
const {fileHash, taskId} = data;
|
|
await resumeReadTask(taskId);
|
|
await resumeUploadTask(fileHash, taskId);
|
|
}
|
|
|
|
// 清理任务
|
|
async function cleanup() {
|
|
await cleanReadTasks();
|
|
await cleanUploadTasks();
|
|
}
|
|
|
|
// 创建任务
|
|
function create(data: TaskCreateData) {
|
|
Reader.create(data.file, data.dirid);
|
|
}
|
|
|
|
// 删除任务
|
|
async function remove(data: TaskEventData): Promise<void> {
|
|
const {fileHash, taskId} = data;
|
|
await removeReadTask(taskId);
|
|
await removeUploadTask(fileHash, taskId);
|
|
}
|
|
|
|
function allTasks(): Task[] {
|
|
return [
|
|
...getReadTasks(),
|
|
...getUploadTasks(),
|
|
]
|
|
}
|
|
|
|
// 配置接口事件
|
|
$on("cfg", "init", configApi);
|
|
|
|
// 监听前端任务事件
|
|
$on("task", "all", allTasks)
|
|
$on("task", "cancel", cancel);
|
|
$on("task", "cleanup", cleanup);
|
|
$on("task", "create", create);
|
|
$on("task", "remove", remove);
|
|
$on("task", "resume", resume);
|
|
|
|
// 网络变化事件
|
|
$on("net", "status", handleNetworkEvent);
|
|
|
|
|
|
|