mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-09-23 05:16:23 -07:00
81 lines
3.3 KiB
TypeScript
81 lines
3.3 KiB
TypeScript
import type {
|
|
JellyfinRemoteGeneralCommandHandlerDeps,
|
|
JellyfinRemotePlayHandlerDeps,
|
|
JellyfinRemotePlaystateHandlerDeps,
|
|
} from './jellyfin-remote-commands';
|
|
import type {
|
|
JellyfinRemoteProgressReporterDeps,
|
|
JellyfinRemoteStoppedReporterDeps,
|
|
} from './jellyfin-remote-playback';
|
|
|
|
export function createBuildHandleJellyfinRemotePlayMainDepsHandler(
|
|
deps: JellyfinRemotePlayHandlerDeps,
|
|
) {
|
|
return (): JellyfinRemotePlayHandlerDeps => ({
|
|
getConfiguredSession: () => deps.getConfiguredSession(),
|
|
getClientInfo: () => deps.getClientInfo(),
|
|
getJellyfinConfig: () => deps.getJellyfinConfig(),
|
|
...(deps.getActivePlayback
|
|
? { getActivePlayback: () => deps.getActivePlayback?.() ?? null }
|
|
: {}),
|
|
playJellyfinItem: (params) => deps.playJellyfinItem(params),
|
|
logWarn: (message: string) => deps.logWarn(message),
|
|
});
|
|
}
|
|
|
|
export function createBuildHandleJellyfinRemotePlaystateMainDepsHandler(
|
|
deps: JellyfinRemotePlaystateHandlerDeps,
|
|
) {
|
|
return (): JellyfinRemotePlaystateHandlerDeps => ({
|
|
getMpvClient: () => deps.getMpvClient(),
|
|
sendMpvCommand: (client, command) => deps.sendMpvCommand(client, command),
|
|
reportJellyfinRemoteProgress: (force: boolean) => deps.reportJellyfinRemoteProgress(force),
|
|
reportJellyfinRemoteStopped: () => deps.reportJellyfinRemoteStopped(),
|
|
jellyfinTicksToSeconds: (ticks: number) => deps.jellyfinTicksToSeconds(ticks),
|
|
});
|
|
}
|
|
|
|
export function createBuildHandleJellyfinRemoteGeneralCommandMainDepsHandler(
|
|
deps: JellyfinRemoteGeneralCommandHandlerDeps,
|
|
) {
|
|
return (): JellyfinRemoteGeneralCommandHandlerDeps => ({
|
|
getMpvClient: () => deps.getMpvClient(),
|
|
sendMpvCommand: (client, command) => deps.sendMpvCommand(client, command),
|
|
getActivePlayback: () => deps.getActivePlayback(),
|
|
reportJellyfinRemoteProgress: (force: boolean) => deps.reportJellyfinRemoteProgress(force),
|
|
logDebug: (message: string) => deps.logDebug(message),
|
|
});
|
|
}
|
|
|
|
export function createBuildReportJellyfinRemoteProgressMainDepsHandler(
|
|
deps: JellyfinRemoteProgressReporterDeps,
|
|
) {
|
|
return (): JellyfinRemoteProgressReporterDeps => ({
|
|
getActivePlayback: () => deps.getActivePlayback(),
|
|
clearActivePlayback: () => deps.clearActivePlayback(),
|
|
getSession: () => deps.getSession(),
|
|
getMpvClient: () => deps.getMpvClient(),
|
|
getNow: () => deps.getNow(),
|
|
getLastProgressAtMs: () => deps.getLastProgressAtMs(),
|
|
setLastProgressAtMs: (value: number) => deps.setLastProgressAtMs(value),
|
|
progressIntervalMs: deps.progressIntervalMs,
|
|
ticksPerSecond: deps.ticksPerSecond,
|
|
logDebug: (message: string, error: unknown) => deps.logDebug(message, error),
|
|
});
|
|
}
|
|
|
|
export function createBuildReportJellyfinRemoteStoppedMainDepsHandler(
|
|
deps: JellyfinRemoteStoppedReporterDeps,
|
|
) {
|
|
return (): JellyfinRemoteStoppedReporterDeps => ({
|
|
getActivePlayback: () => deps.getActivePlayback(),
|
|
clearActivePlayback: () => deps.clearActivePlayback(),
|
|
getSession: () => deps.getSession(),
|
|
getMpvClient: () => deps.getMpvClient(),
|
|
getNow: deps.getNow ? () => deps.getNow?.() ?? Date.now() : undefined,
|
|
ticksPerSecond: deps.ticksPerSecond,
|
|
logDebug: (message: string, error: unknown) => deps.logDebug(message, error),
|
|
...(deps.logWarn ? { logWarn: (message: string) => deps.logWarn?.(message) } : {}),
|
|
});
|
|
}
|