mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-02 06:22:42 -08:00
49 lines
1.5 KiB
TypeScript
49 lines
1.5 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 applyRuntimeOptionResultRuntime(
|
|
result: RuntimeOptionApplyResult,
|
|
showMpvOsd: (text: string) => void,
|
|
): RuntimeOptionApplyResult {
|
|
if (result.ok && result.osdMessage) {
|
|
showMpvOsd(result.osdMessage);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
export function setRuntimeOptionFromIpcRuntime(
|
|
manager: RuntimeOptionsManagerLike | null,
|
|
id: RuntimeOptionId,
|
|
value: RuntimeOptionValue,
|
|
showMpvOsd: (text: string) => void,
|
|
): RuntimeOptionApplyResult {
|
|
if (!manager) {
|
|
return { ok: false, error: 'Runtime options manager unavailable' };
|
|
}
|
|
const result = applyRuntimeOptionResultRuntime(manager.setOptionValue(id, value), showMpvOsd);
|
|
if (!result.ok && result.error) {
|
|
showMpvOsd(result.error);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
export function cycleRuntimeOptionFromIpcRuntime(
|
|
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 = applyRuntimeOptionResultRuntime(manager.cycleOption(id, direction), showMpvOsd);
|
|
if (!result.ok && result.error) {
|
|
showMpvOsd(result.error);
|
|
}
|
|
return result;
|
|
}
|