mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-27 18:22:41 -08:00
65 lines
1.6 KiB
TypeScript
65 lines
1.6 KiB
TypeScript
import {
|
|
RuntimeOptionApplyResult,
|
|
RuntimeOptionId,
|
|
RuntimeOptionValue,
|
|
} from "../../types";
|
|
|
|
export interface RuntimeOptionsManagerLike {
|
|
setOptionValue: (
|
|
id: RuntimeOptionId,
|
|
value: RuntimeOptionValue,
|
|
) => RuntimeOptionApplyResult;
|
|
cycleOption: (
|
|
id: RuntimeOptionId,
|
|
direction: 1 | -1,
|
|
) => RuntimeOptionApplyResult;
|
|
}
|
|
|
|
export function applyRuntimeOptionResultRuntimeService(
|
|
result: RuntimeOptionApplyResult,
|
|
showMpvOsd: (text: string) => void,
|
|
): RuntimeOptionApplyResult {
|
|
if (result.ok && result.osdMessage) {
|
|
showMpvOsd(result.osdMessage);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
export function setRuntimeOptionFromIpcRuntimeService(
|
|
manager: RuntimeOptionsManagerLike | null,
|
|
id: RuntimeOptionId,
|
|
value: RuntimeOptionValue,
|
|
showMpvOsd: (text: string) => void,
|
|
): RuntimeOptionApplyResult {
|
|
if (!manager) {
|
|
return { ok: false, error: "Runtime options manager unavailable" };
|
|
}
|
|
const result = applyRuntimeOptionResultRuntimeService(
|
|
manager.setOptionValue(id, value),
|
|
showMpvOsd,
|
|
);
|
|
if (!result.ok && result.error) {
|
|
showMpvOsd(result.error);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
export function cycleRuntimeOptionFromIpcRuntimeService(
|
|
manager: RuntimeOptionsManagerLike | null,
|
|
id: RuntimeOptionId,
|
|
direction: 1 | -1,
|
|
showMpvOsd: (text: string) => void,
|
|
): RuntimeOptionApplyResult {
|
|
if (!manager) {
|
|
return { ok: false, error: "Runtime options manager unavailable" };
|
|
}
|
|
const result = applyRuntimeOptionResultRuntimeService(
|
|
manager.cycleOption(id, direction),
|
|
showMpvOsd,
|
|
);
|
|
if (!result.ok && result.error) {
|
|
showMpvOsd(result.error);
|
|
}
|
|
return result;
|
|
}
|