Files
SubMiner/src/core/services/runtime-config-service.ts

51 lines
1.5 KiB
TypeScript

interface RuntimeAutoUpdateOptionManagerLike {
getOptionValue: (id: "anki.autoUpdateNewCards") => unknown;
}
interface RuntimeConfigLike {
auto_start_overlay?: boolean;
bind_visible_overlay_to_mpv_sub_visibility: boolean;
invisibleOverlay: {
startupVisibility: "visible" | "hidden" | "platform-default";
};
ankiConnect?: {
behavior?: {
autoUpdateNewCards?: boolean;
};
};
}
export function getInitialInvisibleOverlayVisibilityService(
config: RuntimeConfigLike,
platform: NodeJS.Platform,
): boolean {
const visibility = config.invisibleOverlay.startupVisibility;
if (visibility === "visible") return true;
if (visibility === "hidden") return false;
if (platform === "linux") return false;
return true;
}
export function shouldAutoInitializeOverlayRuntimeFromConfigService(
config: RuntimeConfigLike,
): boolean {
if (config.auto_start_overlay === true) return true;
if (config.invisibleOverlay.startupVisibility === "visible") return true;
return false;
}
export function shouldBindVisibleOverlayToMpvSubVisibilityService(
config: RuntimeConfigLike,
): boolean {
return config.bind_visible_overlay_to_mpv_sub_visibility;
}
export function isAutoUpdateEnabledRuntimeService(
config: RuntimeConfigLike,
runtimeOptionsManager: RuntimeAutoUpdateOptionManagerLike | null,
): boolean {
const value = runtimeOptionsManager?.getOptionValue("anki.autoUpdateNewCards");
if (typeof value === "boolean") return value;
return config.ankiConnect?.behavior?.autoUpdateNewCards !== false;
}