优化调整、BT下载(有bug)
This commit is contained in:
+81
-4
@@ -43,6 +43,7 @@ export const commands = {
|
||||
proxyStart: () => __TAURI_INVOKE<ProcessInfo>("proxy_start"),
|
||||
proxyStatus: () => __TAURI_INVOKE<ProxyStatus>("proxy_status"),
|
||||
proxyStop: () => __TAURI_INVOKE<null>("proxy_stop"),
|
||||
proxyTraffic: () => __TAURI_INVOKE<TrafficSnapshot>("proxy_traffic"),
|
||||
proxyTestDelay: (name: string, url: string | null, timeout: number | null) => __TAURI_INVOKE<number>("proxy_test_delay", { name, url, timeout }),
|
||||
proxyUpdateProfile: (id: string) => __TAURI_INVOKE<ProfileMeta>("proxy_update_profile", { id }),
|
||||
/** 读取快速面板设置(快捷键等) */
|
||||
@@ -198,11 +199,15 @@ export const commands = {
|
||||
/** 检查 URL 重复性并探测文件信息(添加下载前调用) */
|
||||
downloaderCheckUrl: (url: string, dir: string | null, headers: { [key in string]: string } | null) => __TAURI_INVOKE<CheckUrlResult>("downloader_check_url", { url, dir, headers }),
|
||||
/** 添加下载任务 */
|
||||
downloaderAddTask: (url: string, filename: string | null, dir: string | null, headers: { [key in string]: string } | null, autoRename: boolean | null) => __TAURI_INVOKE<string>("downloader_add_task", { url, filename, dir, headers, autoRename }),
|
||||
downloaderAddTask: (url: string, filename: string | null, dir: string | null, headers: { [key in string]: string } | null, autoRename: boolean | null, onlyFiles: number[] | null) => __TAURI_INVOKE<string>("downloader_add_task", { url, filename, dir, headers, autoRename, onlyFiles }),
|
||||
/** 暂停任务 */
|
||||
downloaderPauseTask: (id: string) => __TAURI_INVOKE<null>("downloader_pause_task", { id }),
|
||||
/** 恢复任务 */
|
||||
downloaderResumeTask: (id: string) => __TAURI_INVOKE<null>("downloader_resume_task", { id }),
|
||||
/** 取消任务(置为已取消,清空进度并删除下载文件,但保留记录) */
|
||||
downloaderCancelTask: (id: string) => __TAURI_INVOKE<null>("downloader_cancel_task", { id }),
|
||||
/** 重新下载已取消/出错的任务 */
|
||||
downloaderRedownload: (id: string) => __TAURI_INVOKE<null>("downloader_redownload", { id }),
|
||||
/** 移除任务 */
|
||||
downloaderRemoveTask: (id: string, deleteFiles: boolean | null) => __TAURI_INVOKE<null>("downloader_remove_task", { id, deleteFiles }),
|
||||
/** 获取设置 */
|
||||
@@ -213,6 +218,17 @@ export const commands = {
|
||||
downloaderOpenDir: (path: string) => __TAURI_INVOKE<null>("downloader_open_dir", { path }),
|
||||
/** 用系统默认浏览器打开 URL */
|
||||
downloaderOpenUrl: (url: string) => __TAURI_INVOKE<null>("downloader_open_url", { url }),
|
||||
/**
|
||||
* 将指定 label 的下载窗口显示并强制置为前台。
|
||||
* Tauri 的 set_focus 在 Windows 上受前台锁定限制(尤其下载窗口由后台进程创建、
|
||||
* 或创建到非主显示器时更明显),改用原生 SetForegroundWindow + BringWindowToTop
|
||||
* (模拟 Alt 键重置前台锁定),保证开始/完成下载时窗口能正确定位到前台。
|
||||
*/
|
||||
downloaderFocusWindow: (label: string) => __TAURI_INVOKE<null>("downloader_focus_window", { label }),
|
||||
/** 解析磁力链 / .torrent 文件,返回种子信息(名称 / infohash / 文件列表),供前端做文件勾选 */
|
||||
downloaderInspect: (input: string) => __TAURI_INVOKE<TorrentInfo>("downloader_inspect", { input }),
|
||||
/** 磁力任务:元数据解析成功后,用户勾选文件并确认开始下载 */
|
||||
downloaderSelectBtFiles: (id: string, onlyFiles: number[]) => __TAURI_INVOKE<null>("downloader_select_bt_files", { id, onlyFiles }),
|
||||
/** 禁用指定窗口(按 label 查找)的显示/隐藏过渡动画,消除覆盖层出现/消失时的缩放动画 */
|
||||
screenshotDisableTransitions: (label: string) => __TAURI_INVOKE<null>("screenshot_disable_transitions", { label }),
|
||||
/** 一次 IPC 完成指定窗口的显示与聚焦(截图覆盖层显示关键路径,减少串行往返) */
|
||||
@@ -280,6 +296,16 @@ export type ArchiveInfo = {
|
||||
size: number,
|
||||
};
|
||||
|
||||
/** BT 种子内文件条目(多文件任务用;阶段1下载全部文件,但保留列表供 UI 展示) */
|
||||
export type BtFileInfo = {
|
||||
/** 文件在种子内的索引 */
|
||||
index: number,
|
||||
/** 相对种子根目录的路径(如 "sub/file.mkv") */
|
||||
path: string,
|
||||
/** 文件大小(字节) */
|
||||
size: number,
|
||||
};
|
||||
|
||||
/** 前端可见的捕获数据 */
|
||||
export type CaptureData = {
|
||||
pngBase64: string,
|
||||
@@ -372,12 +398,20 @@ export type DeleteResult = {
|
||||
export type DownloadTask = {
|
||||
/** 任务 ID(自增 hex 字符串) */
|
||||
id: string,
|
||||
/** 下载地址 */
|
||||
/** 下载地址(HTTP URL 或磁力链接) */
|
||||
url: string,
|
||||
/** 文件名 */
|
||||
/** 文件名(HTTP:目标文件名;BT:种子名称) */
|
||||
filename: string,
|
||||
/** 保存目录(绝对路径) */
|
||||
dir: string,
|
||||
/** 协议类型 */
|
||||
protocol?: TaskProtocol,
|
||||
/** BT 种子 infohash(协议=BitTorrent 时存在) */
|
||||
infoHash?: string | null,
|
||||
/** BT 种子内文件列表(协议=BitTorrent 时存在) */
|
||||
btFiles?: BtFileInfo[],
|
||||
/** BT 元数据是否已解析就绪(异步添加时:后台解析完成前为 false,调度器跳过) */
|
||||
btMetadataReady?: boolean,
|
||||
/** 状态 */
|
||||
status: TaskStatus,
|
||||
/** 文件总大小(字节),0=未知 */
|
||||
@@ -420,6 +454,14 @@ export type DownloaderSettings = {
|
||||
checkDuplicate?: boolean,
|
||||
/** 下载是否使用代理:true=尊重系统代理(mihomo 开启系统代理时经其转发),false=强制直连 */
|
||||
useProxy?: boolean,
|
||||
/** BitTorrent 上传限速 KB/s(0=不限) */
|
||||
btUploadLimitKb?: number,
|
||||
/** BitTorrent 下载完成后是否继续做种上传(false=下载完即停止上传) */
|
||||
btSeedAfterDownload?: boolean,
|
||||
/** BitTorrent 监听端口(0=自动选择) */
|
||||
btListenPort?: number,
|
||||
/** BitTorrent 使用代理下载:开启后自动使用代理模块(mihomo)的 SOCKS5 端口;代理不可用时降级直连 */
|
||||
btUseProxy?: boolean,
|
||||
};
|
||||
|
||||
/** 重复类型 */
|
||||
@@ -604,6 +646,13 @@ export type SpecialLocation = {
|
||||
args: string[],
|
||||
};
|
||||
|
||||
/** 任务下载协议类型 */
|
||||
export type TaskProtocol =
|
||||
/** HTTP/HTTPS 直链 */
|
||||
"http" |
|
||||
/** BitTorrent(磁力链 / .torrent 文件) */
|
||||
"bittorrent";
|
||||
|
||||
/** 任务状态 */
|
||||
export type TaskStatus =
|
||||
/** 排队等待(并发数已满) */
|
||||
@@ -615,7 +664,35 @@ export type TaskStatus =
|
||||
/** 已完成 */
|
||||
"complete" |
|
||||
/** 错误 */
|
||||
"error";
|
||||
"error" |
|
||||
/** 已取消(用户取消:进度与文件已清除,仅保留记录,只能再次下载) */
|
||||
"cancelled";
|
||||
|
||||
/** 种子信息(inspect 解析结果,供命令返回给前端做文件勾选) */
|
||||
export type TorrentInfo = {
|
||||
/** 种子名称 */
|
||||
name: string,
|
||||
/** infohash(hex 小写字符串) */
|
||||
infoHash: string,
|
||||
/** 种子内全部文件总大小(字节) */
|
||||
totalSize: number,
|
||||
/** 种子内文件列表 */
|
||||
files: BtFileInfo[],
|
||||
};
|
||||
|
||||
/** 实时流量快照(由 /connections 的会话总量差分得出实时速率) */
|
||||
export type TrafficSnapshot = {
|
||||
/** 本次会话累计下载字节数 */
|
||||
downloadTotal: number,
|
||||
/** 本次会话累计上传字节数 */
|
||||
uploadTotal: number,
|
||||
/** 实时下载速率(字节/秒) */
|
||||
downloadSpeed: number,
|
||||
/** 实时上传速率(字节/秒) */
|
||||
uploadSpeed: number,
|
||||
/** 当前活跃连接数 */
|
||||
activeConnections: number,
|
||||
};
|
||||
|
||||
/** release 中的一个资产 */
|
||||
export type UpdateAsset = {
|
||||
|
||||
@@ -10,6 +10,8 @@ export const WINDOWS = {
|
||||
osdOverlay: 'osd-overlay',
|
||||
screenshotOverlay: 'screenshot-overlay',
|
||||
screenshotPin: 'screenshot-pin',
|
||||
/** 单文件一次性下载窗口前缀,实际 label = `${downloadWindow}-<taskId>` */
|
||||
downloadWindow: 'download-window',
|
||||
} as const
|
||||
|
||||
/** Tauri 事件名(前端 emit / listen 与 Rust constants::events 对应) */
|
||||
@@ -72,7 +74,7 @@ export const EVENTS = {
|
||||
downloadAdded: 'download-added',
|
||||
/** 任务被删除(浏览器扩展通过 HTTP API 删除任务时发出,前端据此刷新任务列表) */
|
||||
downloadRemoved: 'download-removed',
|
||||
/** 浏览器扩展通过 HTTP API 新增下载(置前主窗口并跳到下载画面) */
|
||||
/** 浏览器扩展通过 HTTP API 新增下载(负载 { id },前端据以为该任务创建专属下载窗口) */
|
||||
downloadExtensionAdded: 'download-extension-added',
|
||||
} as const
|
||||
|
||||
@@ -94,6 +96,8 @@ export const STORAGE_KEYS = {
|
||||
quickpanelDeleteFilterFavs: 'thing_quickpanel_delete_filter_favs',
|
||||
currencyRates: 'thing_quickpanel_currency_rates',
|
||||
monitorOsdConfig: 'thing_monitor_osd_config',
|
||||
/** 关闭"自动启动监控内核"时暂存的 OSD 开关状态(开启自动启动时据此恢复) */
|
||||
monitorOsdPending: 'thing_monitor_osd_pending',
|
||||
monitorOverviewCards: 'thing_monitor_overview_cards',
|
||||
screenshotHistory: 'thing_screenshot_history',
|
||||
screenshotPinIndex: 'thing_screenshot_pin_index',
|
||||
|
||||
Reference in New Issue
Block a user