refactor: extract media settings state

This commit is contained in:
MythEclipse
2026-05-19 14:16:00 +07:00
parent a1b85d8ac3
commit 3639028f6f
2 changed files with 31 additions and 25 deletions
+23
View File
@@ -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<MediaSettings> {
const stored = await getPersistedValue("media-settings", defaultMediaSettings);
return {
...defaultMediaSettings,
...(stored as MediaSettings),
};
}
export async function persistMediaSettings(
settings: MediaSettings,
): Promise<void> {
await setPersistedValue("media-settings", settings);
}
+8 -25
View File
@@ -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<MediaSettings> {
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);
},
});