import { BrowserView, BrowserWindow } from "electron"; import { AppsMain } from "../mapi/app/main"; type HookType = | never | "Show" | "Hide" | "EnterFullScreen" | "LeaveFullScreen" | "ShowQuitConfirmDialog"; export const executeHooks = async ( win: BrowserWindow, hook: HookType, data?: any, ) => { const evalJs = ` if(window.__page && window.__page.hooks && typeof window.__page.hooks.on${hook} === 'function' ) { try { window.__page.hooks.on${hook}(${JSON.stringify(data)}); } catch(e) { console.log('executeHooks.on${hook}.error', e); } }`; return win.webContents?.executeJavaScript(evalJs); }; export const executeDarkMode = async ( view: BrowserWindow | BrowserView, data: { isSystem: boolean; }, ) => { data = Object.assign( { isSystem: false, }, data, ); if (await AppsMain.shouldDarkMode()) { // body and html view.webContents.executeJavaScript(` document.body.setAttribute('data-theme', 'dark'); document.documentElement.setAttribute('data-theme', 'dark'); `); if (data.isSystem) { view.webContents.executeJavaScript( `document.body.setAttribute('arco-theme', 'dark');`, ); } } };