feat: 增加下载任务中心与断点续传

This commit is contained in:
lofyer
2026-08-05 15:25:26 +08:00
parent f72c26642f
commit cb7b020dc8
20 changed files with 1094 additions and 70 deletions
+11 -2
View File
@@ -1,8 +1,7 @@
const { contextBridge, ipcRenderer } = require('electron');
let downloadSeq = 0;
function downloadFile(url, suggestName, entryId, extraHeaders, meta, onProgress) {
const requestId = `dl_${Date.now().toString(36)}_${(++downloadSeq).toString(36)}`;
function runDownload(requestId, url, suggestName, entryId, extraHeaders, meta, onProgress) {
const listener = (_event, data) => {
if (!data || data.requestId !== requestId || typeof onProgress !== 'function') return;
try { onProgress(data); } catch (e) { /* 渲染层进度回调异常不影响下载 */ }
@@ -13,6 +12,11 @@ function downloadFile(url, suggestName, entryId, extraHeaders, meta, onProgress)
.finally(() => ipcRenderer.removeListener('download:progress', listener));
}
function downloadFile(url, suggestName, entryId, extraHeaders, meta, onProgress) {
const requestId = `dl_${Date.now().toString(36)}_${(++downloadSeq).toString(36)}`;
return runDownload(requestId, url, suggestName, entryId, extraHeaders, meta, onProgress);
}
function captureReaderRect(rect) {
const value = rect && typeof rect === 'object' ? rect : {};
const area = {
@@ -89,6 +93,11 @@ contextBridge.exposeInMainWorld('api', {
}
},
downloadFile,
downloads: {
run: runDownload,
pause: (requestId) => ipcRenderer.invoke('download:pause', requestId),
delete: (requestId) => ipcRenderer.invoke('download:delete', requestId)
},
zlib: {
hasCreds: () => ipcRenderer.invoke('zlib:hasCreds'),
login: (email, password) => ipcRenderer.invoke('zlib:login', email, password),