refactor: consolidate 3 near-identical setup window factories

Extract shared createSetupWindowHandler with a config parameter.
Public API unchanged.
This commit is contained in:
2026-03-28 10:30:35 -07:00
parent 549ff66d09
commit 17e715b2bf

View File

@@ -1,16 +1,26 @@
export function createCreateFirstRunSetupWindowHandler<TWindow>(deps: { interface SetupWindowConfig {
createBrowserWindow: (options: Electron.BrowserWindowConstructorOptions) => TWindow; width: number;
}) { height: number;
title: string;
resizable?: boolean;
minimizable?: boolean;
maximizable?: boolean;
}
function createSetupWindowHandler<TWindow>(
deps: { createBrowserWindow: (options: Electron.BrowserWindowConstructorOptions) => TWindow },
config: SetupWindowConfig,
) {
return (): TWindow => return (): TWindow =>
deps.createBrowserWindow({ deps.createBrowserWindow({
width: 480, width: config.width,
height: 460, height: config.height,
title: 'SubMiner Setup', title: config.title,
show: true, show: true,
autoHideMenuBar: true, autoHideMenuBar: true,
resizable: false, resizable: config.resizable,
minimizable: false, minimizable: config.minimizable,
maximizable: false, maximizable: config.maximizable,
webPreferences: { webPreferences: {
nodeIntegration: false, nodeIntegration: false,
contextIsolation: true, contextIsolation: true,
@@ -18,36 +28,35 @@ export function createCreateFirstRunSetupWindowHandler<TWindow>(deps: {
}); });
} }
export function createCreateFirstRunSetupWindowHandler<TWindow>(deps: {
createBrowserWindow: (options: Electron.BrowserWindowConstructorOptions) => TWindow;
}) {
return createSetupWindowHandler(deps, {
width: 480,
height: 460,
title: 'SubMiner Setup',
resizable: false,
minimizable: false,
maximizable: false,
});
}
export function createCreateJellyfinSetupWindowHandler<TWindow>(deps: { export function createCreateJellyfinSetupWindowHandler<TWindow>(deps: {
createBrowserWindow: (options: Electron.BrowserWindowConstructorOptions) => TWindow; createBrowserWindow: (options: Electron.BrowserWindowConstructorOptions) => TWindow;
}) { }) {
return (): TWindow => return createSetupWindowHandler(deps, {
deps.createBrowserWindow({
width: 520, width: 520,
height: 560, height: 560,
title: 'Jellyfin Setup', title: 'Jellyfin Setup',
show: true,
autoHideMenuBar: true,
webPreferences: {
nodeIntegration: false,
contextIsolation: true,
},
}); });
} }
export function createCreateAnilistSetupWindowHandler<TWindow>(deps: { export function createCreateAnilistSetupWindowHandler<TWindow>(deps: {
createBrowserWindow: (options: Electron.BrowserWindowConstructorOptions) => TWindow; createBrowserWindow: (options: Electron.BrowserWindowConstructorOptions) => TWindow;
}) { }) {
return (): TWindow => return createSetupWindowHandler(deps, {
deps.createBrowserWindow({
width: 1000, width: 1000,
height: 760, height: 760,
title: 'Anilist Setup', title: 'Anilist Setup',
show: true,
autoHideMenuBar: true,
webPreferences: {
nodeIntegration: false,
contextIsolation: true,
},
}); });
} }