mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-02 18:22:42 -08:00
feat(core): add Electron runtime, services, and app composition
This commit is contained in:
48
src/core/services/runtime-options-ipc.ts
Normal file
48
src/core/services/runtime-options-ipc.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user