feat: 增加下载任务中心与断点续传
This commit is contained in:
+11
-2
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user