refactor(main): extraer configuración, ventanas, procesos y errores

This commit is contained in:
Pandipipas
2026-02-21 18:30:07 +01:00
parent 4eb639a6c5
commit e4e3ea4459
6 changed files with 426 additions and 346 deletions
+46
View File
@@ -0,0 +1,46 @@
export type AppRuntimeConfig = {
title: string;
userModelId: string;
iconPathOverride?: string;
nodecgPort: string;
bundleName: string;
dashboardRoute: string;
loadingRoute: string;
loadDelayMs: number;
startupTimeoutMs: number;
nodecgKillTimeoutMs: number;
};
export function getRuntimeConfig(): AppRuntimeConfig {
return {
title: getEnv("SCOREKO_APP_TITLE", "Scoreko"),
userModelId: getEnv("SCOREKO_APP_USER_MODEL_ID", "com.scoreko.desktop"),
iconPathOverride: getOptionalEnv("SCOREKO_APP_ICON_PATH"),
nodecgPort: getEnv("NODECG_PORT", "9090"),
bundleName: getEnv("NODECG_BUNDLE_NAME", "scoreko-dev"),
dashboardRoute: getEnv("SCOREKO_DASHBOARD_ROUTE", "dashboard/scoreko-dev/main.html?standalone=true"),
loadingRoute: getEnv("SCOREKO_LOADING_ROUTE", "dashboard/loading/main.html?standalone=true"),
loadDelayMs: parseEnvInt("ELECTRON_LOAD_DELAY_MS", 10000),
startupTimeoutMs: parseEnvInt("NODECG_STARTUP_TIMEOUT_MS", 30000),
nodecgKillTimeoutMs: parseEnvInt("NODECG_KILL_TIMEOUT_MS", 2500),
};
}
function getOptionalEnv(name: string): string | undefined {
const value = process.env[name]?.trim();
return value && value.length > 0 ? value : undefined;
}
function getEnv(name: string, fallback: string): string {
return getOptionalEnv(name) ?? fallback;
}
function parseEnvInt(name: string, fallback: number): number {
const rawValue = process.env[name];
if (!rawValue) {
return fallback;
}
const parsedValue = Number.parseInt(rawValue, 10);
return Number.isFinite(parsedValue) ? parsedValue : fallback;
}