jm-tech-power-official/Flash Download
A desktop download manager that opens up to 32 connections against one file and can send each of them out a different proxy route.
Public
Uncategorized
Clone
jm-tech-power-official/flash-download.jmproj
src/preload/preload.js
'use strict';
const { contextBridge, ipcRenderer } = require('electron');
// Every call is a named, argument-checked channel — the renderer never gets
// node, fs, or a general-purpose invoke.
const call = (channel) => (...args) => ipcRenderer.invoke(channel, ...args);
contextBridge.exposeInMainWorld('flash', {
getState: call('state:get'),
probe: call('url:probe'),
add: call('download:add'),
pause: call('download:pause'),
resume: call('download:resume'),
retry: call('download:retry'),
rebalance: call('download:rebalance'),
cancel: call('download:cancel'),
remove: call('download:remove'),
clearFinished: call('download:clearFinished'),
reveal: call('download:reveal'),
openFile: call('download:open'),
addRoute: call('route:add'),
updateRoute: call('route:update'),
removeRoute: call('route:remove'),
testRoute: call('route:test'),
testAllRoutes: call('route:testAll'),
updateSettings: call('settings:update'),
chooseFolder: call('dialog:chooseFolder'),
win: {
minimize: call('win:minimize'),
maximize: call('win:maximize'),
close: call('win:close'),
info: call('win:info'),
},
onState: (fn) => {
const listener = (_e, state) => fn(state);
ipcRenderer.on('state', listener);
return () => ipcRenderer.removeListener('state', listener);
},
onNotice: (fn) => {
const listener = (_e, notice) => fn(notice);
ipcRenderer.on('notice', listener);
return () => ipcRenderer.removeListener('notice', listener);
},
onClipboardUrl: (fn) => {
const listener = (_e, url) => fn(url);
ipcRenderer.on('clipboard:url', listener);
return () => ipcRenderer.removeListener('clipboard:url', listener);
},
onOpenUrl: (fn) => {
const listener = (_e, url) => fn(url);
ipcRenderer.on('open-url', listener);
return () => ipcRenderer.removeListener('open-url', listener);
},
onWinState: (fn) => {
const listener = (_e, s) => fn(s);
ipcRenderer.on('win:state', listener);
return () => ipcRenderer.removeListener('win:state', listener);
},
});