Repository navigation
Expand file tree
/
Copy pathpreload.js
More file actions
66 lines (64 loc) · 3.1 KB
/
Copy pathpreload.js
File metadata and controls
66 lines (64 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
const { contextBridge, ipcRenderer } = require('electron');
function slugify(name) {
return (
String(name)
.toLowerCase()
.trim()
.replace(/[^a-z0-9\u4e00-\u9fa5]+/g, '-')
.replace(/^-+|-+$/g, '')
.slice(0, 80) || 'template'
);
}
contextBridge.exposeInMainWorld('electronAPI', {
loadConfig: () => ipcRenderer.invoke('load-config'),
resolvePreset: (preset, colorMode) => ipcRenderer.invoke('resolve-preset', preset, colorMode),
getAppVersion: () => ipcRenderer.invoke('get-app-version'),
getTimerBaseSize: () => ipcRenderer.invoke('get-timer-base-size'),
getLatestChangelog: () => ipcRenderer.invoke('get-latest-changelog'),
consumeMigrationInfo: () => ipcRenderer.invoke('consume-migration-info'),
saveConfig: (config) => ipcRenderer.invoke('save-config', config),
resetConfig: () => ipcRenderer.invoke('reset-config'),
openTimer: () => ipcRenderer.invoke('open-timer'),
openEditor: () => ipcRenderer.invoke('open-editor'),
toggleFullscreen: () => ipcRenderer.invoke('toggle-fullscreen'),
exportConfig: (config) => ipcRenderer.invoke('export-config', config),
exportStandalone: (config) => ipcRenderer.invoke('export-standalone', config),
importConfig: () => ipcRenderer.invoke('import-config'),
getTemplates: () => ipcRenderer.invoke('get-templates'),
applyTemplate: (id) => ipcRenderer.invoke('apply-template', id),
saveTemplate: (id, name, description, config) =>
ipcRenderer.invoke('save-template', { id, name, description, config }),
deleteTemplate: (id) => ipcRenderer.invoke('delete-template', id),
saveCustomTemplate: (name, config) =>
ipcRenderer.invoke('save-template', { id: slugify(name), name, description: '', config }),
deleteCustomTemplate: (name) => ipcRenderer.invoke('delete-template', slugify(name)),
log: (level, message) => ipcRenderer.invoke('log', level, message),
onConfigUpdated: (callback) => {
const listener = (_event, config) => callback(config);
ipcRenderer.on('config-updated', listener);
return () => ipcRenderer.removeListener('config-updated', listener);
},
onExportProgress: (callback) => {
const listener = (_event, data) => callback(data);
ipcRenderer.on('export-progress', listener);
return () => ipcRenderer.removeListener('export-progress', listener);
},
onUpdateAvailable: (callback) => {
const listener = (_event, info) => callback(info);
ipcRenderer.on('update-available', listener);
return () => ipcRenderer.removeListener('update-available', listener);
},
onUpdateDownloaded: (callback) => {
const listener = () => callback();
ipcRenderer.on('update-downloaded', listener);
return () => ipcRenderer.removeListener('update-downloaded', listener);
},
onUpdateError: (callback) => {
const listener = (_event, error) => callback(error);
ipcRenderer.on('update-error', listener);
return () => ipcRenderer.removeListener('update-error', listener);
},
startDownloadUpdate: () => ipcRenderer.invoke('start-download-update'),
quitAndInstall: () => ipcRenderer.invoke('quit-and-install'),
skipUpdate: (version) => ipcRenderer.invoke('skip-update', version)
});