feat(core): add Electron runtime, services, and app composition

This commit is contained in:
2026-02-22 21:43:43 -08:00
parent 448ce03fd4
commit d3fd47f0ec
562 changed files with 69719 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
import type { CliArgs } from '../../cli/args';
type JellyfinSession = {
serverUrl: string;
accessToken: string;
userId: string;
username: string;
};
type JellyfinClientInfo = {
clientName: string;
clientVersion: string;
deviceId: string;
};
export function createHandleJellyfinPlayCommand(deps: {
playJellyfinItemInMpv: (params: {
session: JellyfinSession;
clientInfo: JellyfinClientInfo;
jellyfinConfig: unknown;
itemId: string;
audioStreamIndex?: number;
subtitleStreamIndex?: number;
setQuitOnDisconnectArm?: boolean;
}) => Promise<void>;
logWarn: (message: string) => void;
}) {
return async (params: {
args: CliArgs;
session: JellyfinSession;
clientInfo: JellyfinClientInfo;
jellyfinConfig: unknown;
}): Promise<boolean> => {
const { args, session, clientInfo, jellyfinConfig } = params;
if (!args.jellyfinPlay) {
return false;
}
if (!args.jellyfinItemId) {
deps.logWarn('Ignoring --jellyfin-play without --jellyfin-item-id.');
return true;
}
await deps.playJellyfinItemInMpv({
session,
clientInfo,
jellyfinConfig,
itemId: args.jellyfinItemId,
audioStreamIndex: args.jellyfinAudioStreamIndex,
subtitleStreamIndex: args.jellyfinSubtitleStreamIndex,
setQuitOnDisconnectArm: true,
});
return true;
};
}