mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-04-27 04:19:27 -07:00
feat(core): add Electron runtime, services, and app composition
This commit is contained in:
63
src/main/subsync-runtime.ts
Normal file
63
src/main/subsync-runtime.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import { SubsyncResolvedConfig } from '../subsync/utils';
|
||||
import type { SubsyncManualPayload, SubsyncManualRunRequest, SubsyncResult } from '../types';
|
||||
import type { SubsyncRuntimeDeps } from '../core/services/subsync-runner';
|
||||
import { createSubsyncRuntimeDeps } from './dependencies';
|
||||
import {
|
||||
runSubsyncManualFromIpcRuntime as runSubsyncManualFromIpcRuntimeCore,
|
||||
triggerSubsyncFromConfigRuntime as triggerSubsyncFromConfigRuntimeCore,
|
||||
} from '../core/services';
|
||||
|
||||
export interface SubsyncRuntimeServiceInput {
|
||||
getMpvClient: SubsyncRuntimeDeps['getMpvClient'];
|
||||
getResolvedSubsyncConfig: () => SubsyncResolvedConfig;
|
||||
isSubsyncInProgress: SubsyncRuntimeDeps['isSubsyncInProgress'];
|
||||
setSubsyncInProgress: SubsyncRuntimeDeps['setSubsyncInProgress'];
|
||||
showMpvOsd: SubsyncRuntimeDeps['showMpvOsd'];
|
||||
openManualPicker: (payload: SubsyncManualPayload) => void;
|
||||
}
|
||||
|
||||
export interface SubsyncRuntimeServiceStateInput {
|
||||
getMpvClient: SubsyncRuntimeServiceInput['getMpvClient'];
|
||||
getResolvedSubsyncConfig: SubsyncRuntimeServiceInput['getResolvedSubsyncConfig'];
|
||||
getSubsyncInProgress: () => boolean;
|
||||
setSubsyncInProgress: SubsyncRuntimeServiceInput['setSubsyncInProgress'];
|
||||
showMpvOsd: SubsyncRuntimeServiceInput['showMpvOsd'];
|
||||
openManualPicker: SubsyncRuntimeServiceInput['openManualPicker'];
|
||||
}
|
||||
|
||||
export function createSubsyncRuntimeServiceInputFromState(
|
||||
input: SubsyncRuntimeServiceStateInput,
|
||||
): SubsyncRuntimeServiceInput {
|
||||
return {
|
||||
getMpvClient: input.getMpvClient,
|
||||
getResolvedSubsyncConfig: input.getResolvedSubsyncConfig,
|
||||
isSubsyncInProgress: input.getSubsyncInProgress,
|
||||
setSubsyncInProgress: input.setSubsyncInProgress,
|
||||
showMpvOsd: input.showMpvOsd,
|
||||
openManualPicker: input.openManualPicker,
|
||||
};
|
||||
}
|
||||
|
||||
export function createSubsyncRuntimeServiceDeps(
|
||||
params: SubsyncRuntimeServiceInput,
|
||||
): SubsyncRuntimeDeps {
|
||||
return createSubsyncRuntimeDeps({
|
||||
getMpvClient: params.getMpvClient,
|
||||
getResolvedSubsyncConfig: params.getResolvedSubsyncConfig,
|
||||
isSubsyncInProgress: params.isSubsyncInProgress,
|
||||
setSubsyncInProgress: params.setSubsyncInProgress,
|
||||
showMpvOsd: params.showMpvOsd,
|
||||
openManualPicker: params.openManualPicker,
|
||||
});
|
||||
}
|
||||
|
||||
export function triggerSubsyncFromConfigRuntime(params: SubsyncRuntimeServiceInput): Promise<void> {
|
||||
return triggerSubsyncFromConfigRuntimeCore(createSubsyncRuntimeServiceDeps(params));
|
||||
}
|
||||
|
||||
export async function runSubsyncManualFromIpcRuntime(
|
||||
request: SubsyncManualRunRequest,
|
||||
params: SubsyncRuntimeServiceInput,
|
||||
): Promise<SubsyncResult> {
|
||||
return runSubsyncManualFromIpcRuntimeCore(request, createSubsyncRuntimeServiceDeps(params));
|
||||
}
|
||||
Reference in New Issue
Block a user