mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-27 18:22:41 -08:00
65 lines
1.8 KiB
TypeScript
65 lines
1.8 KiB
TypeScript
export function createGetResolvedJellyfinConfigHandler(deps: {
|
|
getResolvedConfig: () => { jellyfin: unknown };
|
|
loadStoredSession: () => { accessToken: string; userId: string } | null | undefined;
|
|
getEnv: (name: string) => string | undefined;
|
|
}) {
|
|
return () => {
|
|
const jellyfin = deps.getResolvedConfig().jellyfin as {
|
|
userId?: string;
|
|
[key: string]: unknown;
|
|
};
|
|
|
|
const envToken = deps.getEnv('SUBMINER_JELLYFIN_ACCESS_TOKEN')?.trim() ?? '';
|
|
const envUserId = deps.getEnv('SUBMINER_JELLYFIN_USER_ID')?.trim() ?? '';
|
|
const stored = deps.loadStoredSession();
|
|
const storedToken = stored?.accessToken?.trim() ?? '';
|
|
const storedUserId = stored?.userId?.trim() ?? '';
|
|
|
|
if (envToken.length > 0) {
|
|
return {
|
|
...jellyfin,
|
|
accessToken: envToken,
|
|
userId: envUserId || storedUserId || '',
|
|
} as never;
|
|
}
|
|
|
|
if (storedToken.length > 0 && storedUserId.length > 0) {
|
|
return {
|
|
...jellyfin,
|
|
accessToken: storedToken,
|
|
userId: storedUserId,
|
|
} as never;
|
|
}
|
|
|
|
return jellyfin as never;
|
|
};
|
|
}
|
|
|
|
export function createGetJellyfinClientInfoHandler(deps: {
|
|
getResolvedJellyfinConfig: () => {
|
|
clientName?: string;
|
|
clientVersion?: string;
|
|
deviceId?: string;
|
|
};
|
|
getDefaultJellyfinConfig: () => {
|
|
clientName?: string;
|
|
clientVersion?: string;
|
|
deviceId?: string;
|
|
};
|
|
}) {
|
|
return (
|
|
config = deps.getResolvedJellyfinConfig(),
|
|
): {
|
|
clientName: string;
|
|
clientVersion: string;
|
|
deviceId: string;
|
|
} => {
|
|
const defaults = deps.getDefaultJellyfinConfig();
|
|
return {
|
|
clientName: config.clientName || defaults.clientName || '',
|
|
clientVersion: config.clientVersion || defaults.clientVersion || '',
|
|
deviceId: config.deviceId || defaults.deviceId || '',
|
|
};
|
|
};
|
|
}
|