refactor: extract media settings state
This commit is contained in:
@@ -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
@@ -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);
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user