diff --git a/src/preload/index.ts b/src/preload/index.ts index ca1a052..324e2f9 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -1,5 +1,4 @@ import fs from 'fs' -import path from 'path' import { contextBridge, ipcRenderer } from 'electron' import { domReady } from './utils' import { useLoading } from './loading' @@ -13,16 +12,10 @@ const { appendLoading, removeLoading } = useLoading() appendLoading() })(); -// --------------------------------------------------- - -contextBridge.exposeInMainWorld('bridge', { - __dirname, - __filename, - fs, - path, - ipcRenderer: withPrototype(ipcRenderer), - removeLoading, -}) +// --------- Expose some API to Renderer process. --------- +contextBridge.exposeInMainWorld('fs', fs) +contextBridge.exposeInMainWorld('removeLoading', removeLoading) +contextBridge.exposeInMainWorld('ipcRenderer', withPrototype(ipcRenderer)) // `exposeInMainWorld` can not detect `prototype` attribute and methods, manually patch it. function withPrototype(obj: Record) { diff --git a/src/renderer/src/global.d.ts b/src/renderer/src/global.d.ts index 960d048..8d1a260 100644 --- a/src/renderer/src/global.d.ts +++ b/src/renderer/src/global.d.ts @@ -1,16 +1,11 @@ -export {} +export { } declare global { interface Window { - /** Expose some Api through preload script */ - bridge: { - __dirname: string - __filename: string - fs: typeof import('fs') - path: typeof import('path') - ipcRenderer: import('electron').IpcRenderer - removeLoading: () => void - } + // Expose some Api through preload script + fs: typeof import('fs') + ipcRenderer: import('electron').IpcRenderer + removeLoading: () => void } } diff --git a/src/renderer/src/main.tsx b/src/renderer/src/main.tsx index c933c9b..b3f28cf 100644 --- a/src/renderer/src/main.tsx +++ b/src/renderer/src/main.tsx @@ -10,16 +10,13 @@ ReactDOM.render( , document.getElementById('root'), - () => { - window.bridge.removeLoading() - }, + window.removeLoading, ) -// ----------------------------------------------------------- - -console.log('contextBridge ->', window.bridge) +console.log('fs', window.fs) +console.log('ipcRenderer', window.ipcRenderer) // Use ipcRenderer.on -window.bridge.ipcRenderer.on('main-process-message', (_event, ...args) => { +window.ipcRenderer.on('main-process-message', (_event, ...args) => { console.log('[Receive Main-process message]:', ...args) }) diff --git a/src/renderer/src/samples/electron-store.ts b/src/renderer/src/samples/electron-store.ts index c0cb718..255b942 100644 --- a/src/renderer/src/samples/electron-store.ts +++ b/src/renderer/src/samples/electron-store.ts @@ -1,7 +1,7 @@ // Use 'electron-store' const store = { async get(key: string) { - const { invoke } = window.bridge.ipcRenderer + const { invoke } = window.ipcRenderer let value = await invoke('electron-store', 'get', key) try { value = JSON.parse(value) @@ -10,7 +10,7 @@ const store = { } }, async set(key: string, value: any) { - const { invoke } = window.bridge.ipcRenderer + const { invoke } = window.ipcRenderer let val = value try { if (value && typeof value === 'object') { @@ -25,7 +25,7 @@ const store = { (async () => { await store.set('Date.now', Date.now()) console.log('electron-store ->', 'Date.now:', await store.get('Date.now')) - console.log('electron-store ->', 'path:', await window.bridge.ipcRenderer.invoke('electron-store', 'path')) + console.log('electron-store ->', 'path:', await window.ipcRenderer.invoke('electron-store', 'path')) })(); export { }