58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
|
|
import type { WebContents } from "electron/main";
|
||
|
|
|
||
|
|
function normalizeBooleanEnv(value: string | undefined): boolean | null {
|
||
|
|
if (!value) {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
const normalized = value.trim().toLowerCase();
|
||
|
|
if (["1", "true", "yes", "on"].includes(normalized)) {
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
if (["0", "false", "no", "off"].includes(normalized)) {
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
export function shouldAutoOpenExecutionDevtools(): boolean {
|
||
|
|
const explicit = normalizeBooleanEnv(process.env.GEO_DESKTOP_EXECUTION_DEVTOOLS);
|
||
|
|
if (explicit !== null) {
|
||
|
|
return explicit;
|
||
|
|
}
|
||
|
|
|
||
|
|
return Boolean(process.env.ELECTRON_RENDERER_URL);
|
||
|
|
}
|
||
|
|
|
||
|
|
export function shouldAutoOpenBackgroundExecutionDevtools(): boolean {
|
||
|
|
const explicit = normalizeBooleanEnv(process.env.GEO_DESKTOP_EXECUTION_DEVTOOLS);
|
||
|
|
if (explicit !== null) {
|
||
|
|
return explicit;
|
||
|
|
}
|
||
|
|
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
export function maybeOpenExecutionDevtools(
|
||
|
|
webContents: WebContents,
|
||
|
|
label: string,
|
||
|
|
options: { background?: boolean } = {},
|
||
|
|
): void {
|
||
|
|
const allowOpen = options.background
|
||
|
|
? shouldAutoOpenBackgroundExecutionDevtools()
|
||
|
|
: shouldAutoOpenExecutionDevtools();
|
||
|
|
if (!allowOpen) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (webContents.isDestroyed() || webContents.isDevToolsOpened()) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
try {
|
||
|
|
webContents.openDevTools({ mode: "detach" });
|
||
|
|
console.info("[desktop-devtools] opened execution devtools", { label });
|
||
|
|
} catch (error) {
|
||
|
|
console.warn("[desktop-devtools] failed to open execution devtools", { label, error });
|
||
|
|
}
|
||
|
|
}
|