diff --git a/src/index.ts b/src/index.ts index cb3b038f..16a5d44b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -402,55 +402,16 @@ async function createMainWindow() { removeContentSecurityPolicy(); - win.webContents.on('dom-ready', async () => { + win.webContents.on('dom-ready', () => { if (useInlineMenu && is.windows()) { win.setTitleBarOverlay({ ...defaultTitleBarOverlayOptions, height: Math.floor( defaultTitleBarOverlayOptions.height! * - win.webContents.getZoomFactor(), + win.webContents.getZoomFactor(), ), }); } - - // Inject index.html file as string using insertAdjacentHTML - // In dev mode, get string from process.env.VITE_DEV_SERVER_URL, else use fs.readFileSync - if (is.dev() && process.env.ELECTRON_RENDERER_URL) { - // HACK: to make vite work with electron renderer (supports hot reload) - await win.webContents.executeJavaScript(` - console.log('Loading vite from dev server'); - const viteScript = document.createElement('script'); - viteScript.type = 'module'; - viteScript.src = '${process.env.ELECTRON_RENDERER_URL}/@vite/client'; - const rendererScript = document.createElement('script'); - rendererScript.type = 'module'; - rendererScript.src = '${process.env.ELECTRON_RENDERER_URL}/renderer.ts'; - document.body.appendChild(viteScript); - document.body.appendChild(rendererScript); - 0 - `); - } else { - const rendererPath = path.join(__dirname, '..', 'renderer'); - const indexHTML = parse( - fs.readFileSync(path.join(rendererPath, 'index.html'), 'utf-8'), - ); - const scriptSrc = indexHTML.querySelector('script')!; - const scriptPath = path.join( - rendererPath, - scriptSrc.getAttribute('src')!, - ); - const scriptString = fs.readFileSync(scriptPath, 'utf-8'); - await win.webContents.executeJavaScriptInIsolatedWorld( - 0, - [ - { - code: scriptString + ';0', - url: url.pathToFileURL(scriptPath).toString(), - }, - ], - true, - ); - } }); win.webContents.loadURL(urlToLoad); @@ -629,6 +590,47 @@ app.whenReady().then(async () => { } } + ipcMain.handle('load-renderer-plugins', async () => { + // Inject index.html file as string using insertAdjacentHTML + // In dev mode, get string from process.env.VITE_DEV_SERVER_URL, else use fs.readFileSync + if (is.dev() && process.env.ELECTRON_RENDERER_URL) { + // HACK: to make vite work with electron renderer (supports hot reload) + await mainWindow?.webContents.executeJavaScript(` + console.log('Loading vite from dev server'); + const viteScript = document.createElement('script'); + viteScript.type = 'module'; + viteScript.src = '${process.env.ELECTRON_RENDERER_URL}/@vite/client'; + const rendererScript = document.createElement('script'); + rendererScript.type = 'module'; + rendererScript.src = '${process.env.ELECTRON_RENDERER_URL}/renderer.ts'; + document.body.appendChild(viteScript); + document.body.appendChild(rendererScript); + 0 + `); + } else { + const rendererPath = path.join(__dirname, '..', 'renderer'); + const indexHTML = parse( + fs.readFileSync(path.join(rendererPath, 'index.html'), 'utf-8'), + ); + const scriptSrc = indexHTML.querySelector('script')!; + const scriptPath = path.join( + rendererPath, + scriptSrc.getAttribute('src')!, + ); + const scriptString = fs.readFileSync(scriptPath, 'utf-8'); + await mainWindow?.webContents.executeJavaScriptInIsolatedWorld( + 0, + [ + { + code: scriptString + ';0', + url: url.pathToFileURL(scriptPath).toString(), + }, + ], + true, + ); + } + }); + mainWindow = await createMainWindow(); await setApplicationMenu(mainWindow); await refreshMenu(mainWindow); diff --git a/src/preload.ts b/src/preload.ts index 6800008c..71573edb 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -53,3 +53,5 @@ contextBridge.exposeInMainWorld( 'ELECTRON_RENDERER_URL', process.env.ELECTRON_RENDERER_URL, ); + +ipcRenderer.invoke('load-renderer-plugins');