chore: address code quality audit findings
🔍 Lint / 🪄 Check lint (pull_request) Has been cancelled
🔍 Lint / 🎨 Check format (pull_request) Has been cancelled
🔍 Lint / 🔎 Typecheck (pull_request) Has been cancelled
📊 Quality / 🔒 Security Audit (pull_request) Has been cancelled
📊 Quality / 📋 Dependency Freshness (pull_request) Has been cancelled
📊 Quality / 📦 Bundle Size (pull_request) Has been cancelled
🔍 Lint / 🏗 Build (pull_request) Has been cancelled

This commit is contained in:
Tom Boullay
2026-05-28 08:31:42 +02:00
parent 947025cbf5
commit d654565f87
73 changed files with 890 additions and 1457 deletions
+3 -25
View File
@@ -3,7 +3,7 @@ import type {
DialogueManifest,
DialogueVoice,
} from "@/types/dialogues/dialogues";
import type { SubtitleLanguage } from "@/managers/stores/useSettingsStore";
import type { SubtitleLanguage } from "@/types/settings/settings";
import { parseDialogueManifest } from "@/utils/dialogues/dialogueManifestValidation";
import { parseSrt } from "@/utils/subtitles/parseSrt";
import type { SubtitleCue } from "@/utils/subtitles/parseSrt";
@@ -27,18 +27,7 @@ export async function loadDialogueManifest(): Promise<DialogueManifest | null> {
return parseDialogueManifest(await response.json());
}
export function resolveDialogueSubtitlePath(
manifest: DialogueManifest,
dialogue: DialogueDefinition,
language: SubtitleLanguage,
): string | null {
const voice = getDialogueVoice(manifest, dialogue.voice);
if (!voice) return null;
return getVoiceSubtitlePath(voice, language);
}
export function getDialogueVoice(
function getDialogueVoice(
manifest: DialogueManifest,
voiceId: DialogueDefinition["voice"],
): DialogueVoice | null {
@@ -69,7 +58,7 @@ export async function loadDialogueSubtitleCue(
};
}
export async function loadVoiceSubtitleCues(
async function loadVoiceSubtitleCues(
voice: DialogueVoice,
language: SubtitleLanguage,
): Promise<{ path: string; cues: SubtitleCue[] } | null> {
@@ -103,14 +92,3 @@ function getVoiceSubtitlePaths(
.filter((path): path is string => Boolean(path))
.filter((path, index, paths) => paths.indexOf(path) === index);
}
function getVoiceSubtitlePath(
voice: DialogueVoice,
language: SubtitleLanguage,
): string | null {
return (
voice.subtitles[language] ??
voice.subtitles[DEFAULT_SUBTITLE_LANGUAGE] ??
null
);
}
+7 -17
View File
@@ -2,10 +2,8 @@ import { AudioManager } from "@/managers/AudioManager";
import { useSettingsStore } from "@/managers/stores/useSettingsStore";
import { useSubtitleStore } from "@/managers/stores/useSubtitleStore";
import type { DialogueManifest } from "@/types/dialogues/dialogues";
import {
loadDialogueManifest,
loadDialogueSubtitleCue,
} from "@/utils/dialogues/loadDialogueManifest";
import { logger } from "@/utils/core/Logger";
import { loadDialogueSubtitleCue } from "@/utils/dialogues/loadDialogueManifest";
interface QueuedDialogueRequest {
manifest: DialogueManifest;
@@ -15,8 +13,6 @@ interface QueuedDialogueRequest {
const DIALOGUE_PLAY_START_TIMEOUT_MS = 800;
const dialogueQueue: QueuedDialogueRequest[] = [];
let gameplayDialogueManifestPromise: Promise<DialogueManifest | null> | null =
null;
let isDialogueQueuePlaying = false;
export function queueDialogueById(
@@ -35,16 +31,6 @@ export function clearQueuedDialogues(): void {
}
}
export async function playGameplayDialogueById(
dialogueId: string,
): Promise<HTMLAudioElement | null> {
gameplayDialogueManifestPromise ??= loadDialogueManifest();
const manifest = await gameplayDialogueManifestPromise;
if (!manifest) return null;
return queueDialogueById(manifest, dialogueId);
}
export async function playDialogueById(
manifest: DialogueManifest,
dialogueId: string,
@@ -117,7 +103,11 @@ async function playNextQueuedDialogue(): Promise<void> {
);
request.resolve(audio);
if (audio) await waitForDialogueToFinish(audio);
} catch {
} catch (error) {
logger.error("Dialogues", "Failed to play queued dialogue", {
dialogueId: request.dialogueId,
error: error instanceof Error ? error : String(error),
});
request.resolve(null);
}
}