refactor(main): extract mpv client deps factory into helper

This commit is contained in:
2026-02-14 01:15:46 -08:00
parent 31551e0b0d
commit aad967d835

View File

@@ -666,51 +666,7 @@ const startupState = runStartupBootstrapRuntimeService({
appState.keybindings = resolveKeybindings(getResolvedConfig(), DEFAULT_KEYBINDINGS);
},
createMpvClient: () => {
appState.mpvClient = new MpvIpcClient(
appState.mpvSocketPath,
{
getResolvedConfig: () => getResolvedConfig(),
autoStartOverlay: appState.autoStartOverlay,
setOverlayVisible: (visible) => setOverlayVisible(visible),
shouldBindVisibleOverlayToMpvSubVisibility: () =>
shouldBindVisibleOverlayToMpvSubVisibility(),
isVisibleOverlayVisible: () =>
overlayManager.getVisibleOverlayVisible(),
getReconnectTimer: () => appState.reconnectTimer,
setReconnectTimer: (timer) => {
appState.reconnectTimer = timer;
},
getCurrentSubText: () => appState.currentSubText,
setCurrentSubText: (text) => {
appState.currentSubText = text;
},
setCurrentSubAssText: (text) => {
appState.currentSubAssText = text;
},
getSubtitleTimingTracker: () => appState.subtitleTimingTracker,
subtitleWsBroadcast: (text) => {
subtitleWsService.broadcast(text);
},
getOverlayWindowsCount: () => getOverlayWindows().length,
tokenizeSubtitle: (text) => tokenizeSubtitle(text),
broadcastToOverlayWindows: (channel, ...channelArgs) => {
broadcastToOverlayWindows(channel, ...channelArgs);
},
updateMpvSubtitleRenderMetrics: (patch) => {
updateMpvSubtitleRenderMetrics(patch);
},
getMpvSubtitleRenderMetrics: () => appState.mpvSubtitleRenderMetrics,
getPreviousSecondarySubVisibility: () =>
appState.previousSecondarySubVisibility,
setPreviousSecondarySubVisibility: (value) => {
appState.previousSecondarySubVisibility = value;
},
showMpvOsd: (text) => {
showMpvOsd(text);
},
},
);
bindMpvClientEventHandlers(appState.mpvClient);
appState.mpvClient = createMpvClientRuntimeService();
},
reloadConfig: () => {
configService.reloadConfig();
@@ -900,6 +856,50 @@ function bindMpvClientEventHandlers(mpvClient: MpvIpcClient): void {
});
}
function createMpvClientRuntimeService(): MpvIpcClient {
const mpvClient = new MpvIpcClient(appState.mpvSocketPath, {
getResolvedConfig: () => getResolvedConfig(),
autoStartOverlay: appState.autoStartOverlay,
setOverlayVisible: (visible) => setOverlayVisible(visible),
shouldBindVisibleOverlayToMpvSubVisibility: () =>
shouldBindVisibleOverlayToMpvSubVisibility(),
isVisibleOverlayVisible: () => overlayManager.getVisibleOverlayVisible(),
getReconnectTimer: () => appState.reconnectTimer,
setReconnectTimer: (timer) => {
appState.reconnectTimer = timer;
},
getCurrentSubText: () => appState.currentSubText,
setCurrentSubText: (text) => {
appState.currentSubText = text;
},
setCurrentSubAssText: (text) => {
appState.currentSubAssText = text;
},
getSubtitleTimingTracker: () => appState.subtitleTimingTracker,
subtitleWsBroadcast: (text) => {
subtitleWsService.broadcast(text);
},
getOverlayWindowsCount: () => getOverlayWindows().length,
tokenizeSubtitle: (text) => tokenizeSubtitle(text),
broadcastToOverlayWindows: (channel, ...channelArgs) => {
broadcastToOverlayWindows(channel, ...channelArgs);
},
updateMpvSubtitleRenderMetrics: (patch) => {
updateMpvSubtitleRenderMetrics(patch);
},
getMpvSubtitleRenderMetrics: () => appState.mpvSubtitleRenderMetrics,
getPreviousSecondarySubVisibility: () => appState.previousSecondarySubVisibility,
setPreviousSecondarySubVisibility: (value) => {
appState.previousSecondarySubVisibility = value;
},
showMpvOsd: (text) => {
showMpvOsd(text);
},
});
bindMpvClientEventHandlers(mpvClient);
return mpvClient;
}
function updateMpvSubtitleRenderMetrics(
patch: Partial<MpvSubtitleRenderMetrics>,
): void {