mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-08-02 10:00:17 +05:30
feat(preload): allowlist updater:* and crash:* channels, expose API
This commit is contained in:
+31
-1
@@ -135,6 +135,16 @@ const ALLOWED_SEND_CHANNELS = [
|
|||||||
'app:open-external',
|
'app:open-external',
|
||||||
'app:show-save-dialog',
|
'app:show-save-dialog',
|
||||||
|
|
||||||
|
// Updater
|
||||||
|
'updater:check',
|
||||||
|
'updater:install',
|
||||||
|
'updater:get-state',
|
||||||
|
|
||||||
|
// Crash reporter
|
||||||
|
'crash:read',
|
||||||
|
'crash:open-dir',
|
||||||
|
'crash:delete',
|
||||||
|
|
||||||
// Git diff
|
// Git diff
|
||||||
'git-diff',
|
'git-diff',
|
||||||
|
|
||||||
@@ -231,6 +241,9 @@ const ALLOWED_RECEIVE_CHANNELS = [
|
|||||||
'print-preview-styled',
|
'print-preview-styled',
|
||||||
'clear-recent-files',
|
'clear-recent-files',
|
||||||
|
|
||||||
|
// Updater
|
||||||
|
'updater:status',
|
||||||
|
|
||||||
// File dialog / directory listing
|
// File dialog / directory listing
|
||||||
'list-directory',
|
'list-directory',
|
||||||
'pick-folder',
|
'pick-folder',
|
||||||
@@ -439,7 +452,24 @@ contextBridge.exposeInMainWorld('electronAPI', {
|
|||||||
quit: () => ipcRenderer.send('app:quit'),
|
quit: () => ipcRenderer.send('app:quit'),
|
||||||
openExternal: (url) => ipcRenderer.send('app:open-external', url),
|
openExternal: (url) => ipcRenderer.send('app:open-external', url),
|
||||||
showSaveDialog: (args) => ipcRenderer.invoke('app:show-save-dialog', args),
|
showSaveDialog: (args) => ipcRenderer.invoke('app:show-save-dialog', args),
|
||||||
}
|
},
|
||||||
|
|
||||||
|
updater: {
|
||||||
|
check: () => ipcRenderer.invoke('updater:check'),
|
||||||
|
install: () => ipcRenderer.invoke('updater:install'),
|
||||||
|
getState: () => ipcRenderer.invoke('updater:get-state'),
|
||||||
|
onStatus: (cb) => {
|
||||||
|
const subscription = (_event, payload) => cb(payload);
|
||||||
|
ipcRenderer.on('updater:status', subscription);
|
||||||
|
return () => ipcRenderer.removeListener('updater:status', subscription);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
crash: {
|
||||||
|
read: () => ipcRenderer.invoke('crash:read'),
|
||||||
|
openDir: () => ipcRenderer.send('crash:open-dir'),
|
||||||
|
delete: (filename) => ipcRenderer.invoke('crash:delete', filename),
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// Log successful preload initialization
|
// Log successful preload initialization
|
||||||
|
|||||||
@@ -117,4 +117,26 @@ export const ipc = {
|
|||||||
return window.electronAPI.on(channel, callback as (...a: any[]) => void);
|
return window.electronAPI.on(channel, callback as (...a: any[]) => void);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
updater: {
|
||||||
|
check: (): Promise<IpcResult<void | ChannelMissing>> =>
|
||||||
|
safeCall('updater', 'check'),
|
||||||
|
install: (): Promise<IpcResult<void | ChannelMissing>> =>
|
||||||
|
safeCall('updater', 'install'),
|
||||||
|
getState: (): Promise<IpcResult<unknown | ChannelMissing>> =>
|
||||||
|
safeCall('updater', 'getState'),
|
||||||
|
onStatus: (cb: (payload: unknown) => void): (() => void) => {
|
||||||
|
if (typeof window === 'undefined' || !window.electronAPI?.updater?.onStatus) {
|
||||||
|
return () => {};
|
||||||
|
}
|
||||||
|
return window.electronAPI.updater.onStatus(cb);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
crash: {
|
||||||
|
read: (): Promise<IpcResult<unknown | ChannelMissing>> =>
|
||||||
|
safeCall('crash', 'read'),
|
||||||
|
openDir: (): Promise<IpcResult<void | ChannelMissing>> =>
|
||||||
|
safeCall('crash', 'openDir'),
|
||||||
|
delete: (filename: string): Promise<IpcResult<void | ChannelMissing>> =>
|
||||||
|
safeCall('crash', 'delete', filename),
|
||||||
|
},
|
||||||
};
|
};
|
||||||
Reference in New Issue
Block a user