mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-28 06:22:45 -08:00
45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import {
|
|
SubsyncManualPayload,
|
|
} from "../../types";
|
|
import {
|
|
SubsyncRuntimeDeps,
|
|
} from "./subsync-runtime-service";
|
|
import { SubsyncResolvedConfig } from "../../subsync/utils";
|
|
|
|
interface MpvClientLike {
|
|
connected: boolean;
|
|
currentAudioStreamIndex: number | null;
|
|
send: (payload: { command: (string | number)[] }) => void;
|
|
requestProperty: (name: string) => Promise<unknown>;
|
|
}
|
|
|
|
export interface SubsyncDepsRuntimeOptions {
|
|
getMpvClient: () => MpvClientLike | null;
|
|
getResolvedSubsyncConfig: () => SubsyncResolvedConfig;
|
|
isSubsyncInProgress: () => boolean;
|
|
setSubsyncInProgress: (inProgress: boolean) => void;
|
|
showMpvOsd: (text: string) => void;
|
|
sendToVisibleOverlay: (
|
|
channel: string,
|
|
payload?: unknown,
|
|
options?: { restoreOnModalClose?: "runtime-options" | "subsync" },
|
|
) => boolean;
|
|
}
|
|
|
|
export function createSubsyncRuntimeDepsService(
|
|
options: SubsyncDepsRuntimeOptions,
|
|
): SubsyncRuntimeDeps {
|
|
return {
|
|
getMpvClient: options.getMpvClient,
|
|
getResolvedSubsyncConfig: options.getResolvedSubsyncConfig,
|
|
isSubsyncInProgress: options.isSubsyncInProgress,
|
|
setSubsyncInProgress: options.setSubsyncInProgress,
|
|
showMpvOsd: options.showMpvOsd,
|
|
openManualPicker: (payload: SubsyncManualPayload) => {
|
|
options.sendToVisibleOverlay("subsync:open-manual", payload, {
|
|
restoreOnModalClose: "subsync",
|
|
});
|
|
},
|
|
};
|
|
}
|