feat(subsync): add reference and target subtitle track picker (#181)

This commit is contained in:
2026-08-03 01:00:14 -07:00
committed by GitHub
parent 176edd67f1
commit 5b8848518a
19 changed files with 1025 additions and 227 deletions
+16 -3
View File
@@ -295,14 +295,27 @@ export function parseControllerConfigUpdate(value: unknown): ControllerConfigUpd
export function parseSubsyncManualRunRequest(value: unknown): SubsyncManualRunRequest | null {
if (!isObject(value)) return null;
const { engine, sourceTrackId } = value;
const { engine, referenceMode, referenceTrackId, targetTrackId } = value;
if (engine !== 'alass' && engine !== 'ffsubsync') return null;
if (sourceTrackId !== undefined && sourceTrackId !== null && !isInteger(sourceTrackId)) {
if (referenceMode !== undefined && referenceMode !== 'track' && referenceMode !== 'video') {
return null;
}
const parseOptionalTrackId = (raw: unknown): number | null | undefined | false => {
if (raw === undefined) return undefined;
if (raw === null) return null;
return isInteger(raw) ? raw : false;
};
const parsedReferenceTrackId = parseOptionalTrackId(referenceTrackId);
const parsedTargetTrackId = parseOptionalTrackId(targetTrackId);
if (parsedReferenceTrackId === false || parsedTargetTrackId === false) return null;
return {
engine,
sourceTrackId: sourceTrackId === undefined ? undefined : (sourceTrackId as number | null),
referenceMode,
referenceTrackId: parsedReferenceTrackId,
targetTrackId: parsedTargetTrackId,
};
}