Files
SubMiner/src/main/runtime/jellyfin-remote-main-deps.ts
T

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) } : {}),
});
}