mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-30 06:12:06 -07:00
fix: restore integrated texthooker startup
This commit is contained in:
@@ -13,6 +13,7 @@ export interface CliCommandRuntimeServiceContext {
|
||||
showOsd: CliCommandRuntimeServiceDepsParams['mpv']['showOsd'];
|
||||
getTexthookerPort: () => number;
|
||||
setTexthookerPort: (port: number) => void;
|
||||
getTexthookerWebsocketUrl: () => string | undefined;
|
||||
shouldOpenBrowser: () => boolean;
|
||||
openInBrowser: (url: string) => void;
|
||||
isOverlayInitialized: () => boolean;
|
||||
@@ -71,6 +72,7 @@ function createCliCommandDepsFromContext(
|
||||
service: context.texthookerService,
|
||||
getPort: context.getTexthookerPort,
|
||||
setPort: context.setTexthookerPort,
|
||||
getWebsocketUrl: context.getTexthookerWebsocketUrl,
|
||||
shouldOpenBrowser: context.shouldOpenBrowser,
|
||||
openInBrowser: context.openInBrowser,
|
||||
},
|
||||
|
||||
@@ -132,6 +132,7 @@ export interface CliCommandRuntimeServiceDepsParams {
|
||||
service: CliCommandDepsRuntimeOptions['texthooker']['service'];
|
||||
getPort: CliCommandDepsRuntimeOptions['texthooker']['getPort'];
|
||||
setPort: CliCommandDepsRuntimeOptions['texthooker']['setPort'];
|
||||
getWebsocketUrl: CliCommandDepsRuntimeOptions['texthooker']['getWebsocketUrl'];
|
||||
shouldOpenBrowser: CliCommandDepsRuntimeOptions['texthooker']['shouldOpenBrowser'];
|
||||
openInBrowser: CliCommandDepsRuntimeOptions['texthooker']['openInBrowser'];
|
||||
};
|
||||
@@ -293,6 +294,7 @@ export function createCliCommandRuntimeServiceDeps(
|
||||
service: params.texthooker.service,
|
||||
getPort: params.texthooker.getPort,
|
||||
setPort: params.texthooker.setPort,
|
||||
getWebsocketUrl: params.texthooker.getWebsocketUrl,
|
||||
shouldOpenBrowser: params.texthooker.shouldOpenBrowser,
|
||||
openInBrowser: params.texthooker.openInBrowser,
|
||||
},
|
||||
|
||||
@@ -12,6 +12,7 @@ test('build cli command context deps maps handlers and values', () => {
|
||||
texthookerService: { start: () => null, status: () => ({ running: false }) } as never,
|
||||
getTexthookerPort: () => 5174,
|
||||
setTexthookerPort: (port) => calls.push(`port:${port}`),
|
||||
getTexthookerWebsocketUrl: () => 'ws://127.0.0.1:6678',
|
||||
shouldOpenBrowser: () => true,
|
||||
openExternal: async (url) => calls.push(`open:${url}`),
|
||||
logBrowserOpenError: (url) => calls.push(`open-error:${url}`),
|
||||
@@ -82,6 +83,7 @@ test('build cli command context deps maps handlers and values', () => {
|
||||
const deps = buildDeps();
|
||||
assert.equal(deps.getSocketPath(), '/tmp/mpv.sock');
|
||||
assert.equal(deps.getTexthookerPort(), 5174);
|
||||
assert.equal(deps.getTexthookerWebsocketUrl(), 'ws://127.0.0.1:6678');
|
||||
assert.equal(deps.shouldOpenBrowser(), true);
|
||||
assert.equal(deps.isOverlayInitialized(), true);
|
||||
assert.equal(deps.hasMainWindow(), true);
|
||||
|
||||
@@ -10,6 +10,7 @@ export function createBuildCliCommandContextDepsHandler(deps: {
|
||||
texthookerService: CliCommandContextFactoryDeps['texthookerService'];
|
||||
getTexthookerPort: () => number;
|
||||
setTexthookerPort: (port: number) => void;
|
||||
getTexthookerWebsocketUrl: () => string | undefined;
|
||||
shouldOpenBrowser: () => boolean;
|
||||
openExternal: (url: string) => Promise<unknown>;
|
||||
logBrowserOpenError: (url: string, error: unknown) => void;
|
||||
@@ -58,6 +59,7 @@ export function createBuildCliCommandContextDepsHandler(deps: {
|
||||
texthookerService: deps.texthookerService,
|
||||
getTexthookerPort: deps.getTexthookerPort,
|
||||
setTexthookerPort: deps.setTexthookerPort,
|
||||
getTexthookerWebsocketUrl: deps.getTexthookerWebsocketUrl,
|
||||
shouldOpenBrowser: deps.shouldOpenBrowser,
|
||||
openExternal: deps.openExternal,
|
||||
logBrowserOpenError: deps.logBrowserOpenError,
|
||||
|
||||
@@ -14,7 +14,13 @@ test('cli command context factory composes main deps and context handlers', () =
|
||||
const createContext = createCliCommandContextFactory({
|
||||
appState,
|
||||
texthookerService: { isRunning: () => false, start: () => null },
|
||||
getResolvedConfig: () => ({ texthooker: { openBrowser: true } }),
|
||||
getResolvedConfig: () => ({
|
||||
texthooker: { openBrowser: true },
|
||||
annotationWebsocket: { enabled: true, port: 6678 },
|
||||
}),
|
||||
defaultWebsocketPort: 6677,
|
||||
defaultAnnotationWebsocketPort: 6678,
|
||||
hasMpvWebsocketPlugin: () => false,
|
||||
openExternal: async () => {},
|
||||
logBrowserOpenError: () => {},
|
||||
showMpvOsd: (text) => calls.push(`osd:${text}`),
|
||||
|
||||
@@ -14,7 +14,13 @@ test('cli command context main deps builder maps state and callbacks', async ()
|
||||
const build = createBuildCliCommandContextMainDepsHandler({
|
||||
appState,
|
||||
texthookerService: { isRunning: () => false, start: () => null },
|
||||
getResolvedConfig: () => ({ texthooker: { openBrowser: true } }),
|
||||
getResolvedConfig: () => ({
|
||||
texthooker: { openBrowser: true },
|
||||
annotationWebsocket: { enabled: true, port: 6678 },
|
||||
}),
|
||||
defaultWebsocketPort: 6677,
|
||||
defaultAnnotationWebsocketPort: 6678,
|
||||
hasMpvWebsocketPlugin: () => false,
|
||||
openExternal: async (url) => {
|
||||
calls.push(`open:${url}`);
|
||||
},
|
||||
@@ -110,6 +116,7 @@ test('cli command context main deps builder maps state and callbacks', async ()
|
||||
assert.equal(deps.getTexthookerPort(), 5174);
|
||||
deps.setTexthookerPort(5175);
|
||||
assert.equal(appState.texthookerPort, 5175);
|
||||
assert.equal(deps.getTexthookerWebsocketUrl(), 'ws://127.0.0.1:6678');
|
||||
assert.equal(deps.shouldOpenBrowser(), true);
|
||||
deps.showOsd('hello');
|
||||
deps.initializeOverlay();
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import type { CliArgs } from '../../cli/args';
|
||||
import { resolveTexthookerWebsocketUrl } from '../../core/services/startup';
|
||||
import type { CliCommandContextFactoryDeps } from './cli-command-context';
|
||||
|
||||
type CliCommandContextMainState = {
|
||||
@@ -12,7 +13,14 @@ export function createBuildCliCommandContextMainDepsHandler(deps: {
|
||||
appState: CliCommandContextMainState;
|
||||
setLogLevel?: (level: NonNullable<CliArgs['logLevel']>) => void;
|
||||
texthookerService: CliCommandContextFactoryDeps['texthookerService'];
|
||||
getResolvedConfig: () => { texthooker?: { openBrowser?: boolean } };
|
||||
getResolvedConfig: () => {
|
||||
texthooker?: { openBrowser?: boolean };
|
||||
websocket?: { enabled?: boolean | 'auto'; port?: number };
|
||||
annotationWebsocket?: { enabled?: boolean; port?: number };
|
||||
};
|
||||
defaultWebsocketPort: number;
|
||||
defaultAnnotationWebsocketPort: number;
|
||||
hasMpvWebsocketPlugin: () => boolean;
|
||||
openExternal: (url: string) => Promise<unknown>;
|
||||
logBrowserOpenError: (url: string, error: unknown) => void;
|
||||
showMpvOsd: (text: string) => void;
|
||||
@@ -68,6 +76,15 @@ export function createBuildCliCommandContextMainDepsHandler(deps: {
|
||||
setTexthookerPort: (port: number) => {
|
||||
deps.appState.texthookerPort = port;
|
||||
},
|
||||
getTexthookerWebsocketUrl: () =>
|
||||
resolveTexthookerWebsocketUrl(
|
||||
deps.getResolvedConfig(),
|
||||
{
|
||||
defaultWebsocketPort: deps.defaultWebsocketPort,
|
||||
defaultAnnotationWebsocketPort: deps.defaultAnnotationWebsocketPort,
|
||||
},
|
||||
deps.hasMpvWebsocketPlugin(),
|
||||
),
|
||||
shouldOpenBrowser: () => deps.getResolvedConfig().texthooker?.openBrowser !== false,
|
||||
openExternal: (url: string) => deps.openExternal(url),
|
||||
logBrowserOpenError: (url: string, error: unknown) => deps.logBrowserOpenError(url, error),
|
||||
|
||||
@@ -18,6 +18,7 @@ function createDeps() {
|
||||
texthookerService: {} as never,
|
||||
getTexthookerPort: () => 6677,
|
||||
setTexthookerPort: () => {},
|
||||
getTexthookerWebsocketUrl: () => 'ws://127.0.0.1:6678',
|
||||
shouldOpenBrowser: () => true,
|
||||
openExternal: async () => {},
|
||||
logBrowserOpenError: (url: string) => browserErrors.push(url),
|
||||
|
||||
@@ -15,6 +15,7 @@ export type CliCommandContextFactoryDeps = {
|
||||
texthookerService: CliCommandRuntimeServiceContextHandlers['texthookerService'];
|
||||
getTexthookerPort: () => number;
|
||||
setTexthookerPort: (port: number) => void;
|
||||
getTexthookerWebsocketUrl: () => string | undefined;
|
||||
shouldOpenBrowser: () => boolean;
|
||||
openExternal: (url: string) => Promise<unknown>;
|
||||
logBrowserOpenError: (url: string, error: unknown) => void;
|
||||
@@ -67,6 +68,7 @@ export function createCliCommandContext(
|
||||
texthookerService: deps.texthookerService,
|
||||
getTexthookerPort: deps.getTexthookerPort,
|
||||
setTexthookerPort: deps.setTexthookerPort,
|
||||
getTexthookerWebsocketUrl: deps.getTexthookerWebsocketUrl,
|
||||
shouldOpenBrowser: deps.shouldOpenBrowser,
|
||||
openInBrowser: (url: string) => {
|
||||
void deps.openExternal(url).catch((error) => {
|
||||
|
||||
@@ -11,6 +11,9 @@ test('composeCliStartupHandlers returns callable CLI startup handlers', () => {
|
||||
setLogLevel: () => {},
|
||||
texthookerService: {} as never,
|
||||
getResolvedConfig: () => ({}) as never,
|
||||
defaultWebsocketPort: 6677,
|
||||
defaultAnnotationWebsocketPort: 6678,
|
||||
hasMpvWebsocketPlugin: () => false,
|
||||
openExternal: async () => {},
|
||||
logBrowserOpenError: () => {},
|
||||
showMpvOsd: () => {},
|
||||
|
||||
Reference in New Issue
Block a user