From 3639028f6fd7fb163affb969e44229e3a63a2c07 Mon Sep 17 00:00:00 2001 From: MythEclipse Date: Tue, 19 May 2026 14:16:00 +0700 Subject: [PATCH] refactor: extract media settings state --- src/state/mediaSettings.ts | 23 +++++++++++++++++++++++ src/webserver.ts | 33 ++++++++------------------------- 2 files changed, 31 insertions(+), 25 deletions(-) create mode 100644 src/state/mediaSettings.ts diff --git a/src/state/mediaSettings.ts b/src/state/mediaSettings.ts new file mode 100644 index 0000000..6ebfdf7 --- /dev/null +++ b/src/state/mediaSettings.ts @@ -0,0 +1,23 @@ +import { getPersistedValue, setPersistedValue } from "../muxer-queue"; + +export interface MediaSettings { + musicVolume: number; +} + +export const defaultMediaSettings: MediaSettings = { + musicVolume: 1, +}; + +export async function initializeMediaSettings(): Promise { + const stored = await getPersistedValue("media-settings", defaultMediaSettings); + return { + ...defaultMediaSettings, + ...(stored as MediaSettings), + }; +} + +export async function persistMediaSettings( + settings: MediaSettings, +): Promise { + await setPersistedValue("media-settings", settings); +} diff --git a/src/webserver.ts b/src/webserver.ts index 05da6c8..0637293 100644 --- a/src/webserver.ts +++ b/src/webserver.ts @@ -21,7 +21,13 @@ import { createScreenShareController } from "./media/screenShareController"; import { getMetrics, uptimeGauge } from "./metrics"; import { createBroadcaster } from "./moderation/broadcaster"; import type { ModerationBroadcaster } from "./moderation/types"; -import { getPersistedValue, setPersistedValue } from "./muxer-queue"; +import { createSharedUIStateStore } from "./state/uiState"; +import { Streamer } from "./streaming"; +import type { VoiceController } from "./voiceController"; +import { + initializeMediaSettings, + persistMediaSettings, +} from "./state/mediaSettings"; import { discordPlayer } from "./player"; import { createAnalysisRoutes } from "./routes/analysisRoutes"; import { createMediaRoutes } from "./routes/mediaRoutes"; @@ -30,9 +36,6 @@ import { createRecordingsRoutes } from "./routes/recordingsRoutes"; import { createSyncRoutes } from "./routes/syncRoutes"; import { createUIStateRoutes } from "./routes/uiStateRoutes"; import { createVoiceRoutes } from "./routes/voiceRoutes"; -import { createSharedUIStateStore } from "./state/uiState"; -import { Streamer } from "./streaming"; -import type { VoiceController } from "./voiceController"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); @@ -54,26 +57,6 @@ type VoiceGlobals = typeof globalThis & { ) => void; }; -interface MediaSettings { - musicVolume: number; -} - -const defaultMediaSettings: MediaSettings = { - musicVolume: 1, -}; - -async function initializeMediaSettings(): Promise { - const stored = await getPersistedValue( - "media-settings", - defaultMediaSettings, - ); - return { - ...defaultMediaSettings, - ...(stored as MediaSettings), - }; -} - - export async function startWebserver( port: number = 3000, _client: Client, @@ -119,7 +102,7 @@ export async function startWebserver( initialMusicVolume: mediaSettings.musicVolume, onMusicVolumeChange: async (volume) => { mediaSettings = { ...mediaSettings, musicVolume: volume }; - await setPersistedValue("media-settings", mediaSettings); + await persistMediaSettings(mediaSettings); }, });