mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-27 18:22:41 -08:00
refactor: extract yomitan settings runtime wiring
This commit is contained in:
37
src/main.ts
37
src/main.ts
@@ -290,7 +290,6 @@ import {
|
||||
} from './main/runtime/overlay-window-layout-main-deps';
|
||||
import { buildTrayMenuTemplateRuntime, resolveTrayIconPathRuntime } from './main/runtime/tray-runtime';
|
||||
import { createInitializeOverlayRuntimeHandler } from './main/runtime/overlay-runtime-bootstrap';
|
||||
import { createOpenYomitanSettingsHandler } from './main/runtime/yomitan-settings-opener';
|
||||
import {
|
||||
createGetConfiguredShortcutsHandler,
|
||||
createRefreshGlobalAndOverlayShortcutsHandler,
|
||||
@@ -384,10 +383,10 @@ import { createBuildMpvCommandFromIpcRuntimeMainDepsHandler } from './main/runti
|
||||
import { createOverlayWindowRuntimeHandlers } from './main/runtime/overlay-window-runtime-handlers';
|
||||
import {
|
||||
createBuildInitializeOverlayRuntimeBootstrapMainDepsHandler,
|
||||
createBuildOpenYomitanSettingsMainDepsHandler,
|
||||
} from './main/runtime/app-runtime-main-deps';
|
||||
import { createTrayRuntimeHandlers } from './main/runtime/tray-runtime-handlers';
|
||||
import { createYomitanExtensionRuntime } from './main/runtime/yomitan-extension-runtime';
|
||||
import { createYomitanSettingsRuntime } from './main/runtime/yomitan-settings-runtime';
|
||||
import { createBuildInitializeOverlayRuntimeOptionsHandler } from './main/runtime/overlay-runtime-options';
|
||||
import { createBuildInitializeOverlayRuntimeMainDepsHandler } from './main/runtime/overlay-runtime-options-main-deps';
|
||||
import {
|
||||
@@ -3126,24 +3125,22 @@ const initializeOverlayRuntimeHandler = createInitializeOverlayRuntimeHandler(
|
||||
startBackgroundWarmups: () => startBackgroundWarmups(),
|
||||
})(),
|
||||
);
|
||||
const openYomitanSettingsHandler = createOpenYomitanSettingsHandler(
|
||||
createBuildOpenYomitanSettingsMainDepsHandler({
|
||||
ensureYomitanExtensionLoaded: () => ensureYomitanExtensionLoaded(),
|
||||
openYomitanSettingsWindow: ({ yomitanExt, getExistingWindow, setWindow }) => {
|
||||
openYomitanSettingsWindow({
|
||||
yomitanExt: yomitanExt as Extension,
|
||||
getExistingWindow: () => getExistingWindow() as BrowserWindow | null,
|
||||
setWindow: (window) => setWindow(window as BrowserWindow | null),
|
||||
});
|
||||
},
|
||||
getExistingWindow: () => appState.yomitanSettingsWindow,
|
||||
setWindow: (window) => {
|
||||
appState.yomitanSettingsWindow = window as BrowserWindow | null;
|
||||
},
|
||||
logWarn: (message) => logger.warn(message),
|
||||
logError: (message, error) => logger.error(message, error),
|
||||
})(),
|
||||
);
|
||||
const { openYomitanSettings: openYomitanSettingsHandler } = createYomitanSettingsRuntime({
|
||||
ensureYomitanExtensionLoaded: () => ensureYomitanExtensionLoaded(),
|
||||
openYomitanSettingsWindow: ({ yomitanExt, getExistingWindow, setWindow }) => {
|
||||
openYomitanSettingsWindow({
|
||||
yomitanExt: yomitanExt as Extension,
|
||||
getExistingWindow: () => getExistingWindow() as BrowserWindow | null,
|
||||
setWindow: (window) => setWindow(window as BrowserWindow | null),
|
||||
});
|
||||
},
|
||||
getExistingWindow: () => appState.yomitanSettingsWindow,
|
||||
setWindow: (window) => {
|
||||
appState.yomitanSettingsWindow = window as BrowserWindow | null;
|
||||
},
|
||||
logWarn: (message) => logger.warn(message),
|
||||
logError: (message, error) => logger.error(message, error),
|
||||
});
|
||||
|
||||
async function updateLastCardFromClipboard(): Promise<void> {
|
||||
await updateLastCardFromClipboardHandler();
|
||||
|
||||
31
src/main/runtime/yomitan-settings-runtime.test.ts
Normal file
31
src/main/runtime/yomitan-settings-runtime.test.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import { createYomitanSettingsRuntime } from './yomitan-settings-runtime';
|
||||
|
||||
test('yomitan settings runtime composes opener with built deps', async () => {
|
||||
let existingWindow: { id: string } | null = null;
|
||||
const calls: string[] = [];
|
||||
|
||||
const runtime = createYomitanSettingsRuntime({
|
||||
ensureYomitanExtensionLoaded: async () => ({ id: 'ext' }),
|
||||
openYomitanSettingsWindow: ({ getExistingWindow, setWindow }) => {
|
||||
calls.push('open-window');
|
||||
const current = getExistingWindow();
|
||||
if (!current) {
|
||||
setWindow({ id: 'settings' });
|
||||
}
|
||||
},
|
||||
getExistingWindow: () => existingWindow as never,
|
||||
setWindow: (window) => {
|
||||
existingWindow = window as { id: string } | null;
|
||||
},
|
||||
logWarn: (message) => calls.push(`warn:${message}`),
|
||||
logError: (message) => calls.push(`error:${message}`),
|
||||
});
|
||||
|
||||
runtime.openYomitanSettings();
|
||||
await new Promise((resolve) => setTimeout(resolve, 0));
|
||||
|
||||
assert.deepEqual(existingWindow, { id: 'settings' });
|
||||
assert.deepEqual(calls, ['open-window']);
|
||||
});
|
||||
13
src/main/runtime/yomitan-settings-runtime.ts
Normal file
13
src/main/runtime/yomitan-settings-runtime.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { createBuildOpenYomitanSettingsMainDepsHandler } from './app-runtime-main-deps';
|
||||
import { createOpenYomitanSettingsHandler } from './yomitan-settings-opener';
|
||||
|
||||
type OpenYomitanSettingsMainDeps = Parameters<typeof createBuildOpenYomitanSettingsMainDepsHandler>[0];
|
||||
|
||||
export function createYomitanSettingsRuntime(deps: OpenYomitanSettingsMainDeps) {
|
||||
const openYomitanSettingsMainDeps = createBuildOpenYomitanSettingsMainDepsHandler(deps)();
|
||||
const openYomitanSettings = createOpenYomitanSettingsHandler(openYomitanSettingsMainDeps);
|
||||
|
||||
return {
|
||||
openYomitanSettings,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user