Files
Jammy 52636c91ae
Some checks failed
CI / main (push) Has been cancelled
CI / release-e2e (push) Has been cancelled
Track bundled vendor runtime sources
2026-07-07 10:05:50 +08:00

53 lines
1.3 KiB
TypeScript

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');`,
);
}
}
};