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 { getMetrics, uptimeGauge } from "./metrics";
|
||||||
import { createBroadcaster } from "./moderation/broadcaster";
|
import { createBroadcaster } from "./moderation/broadcaster";
|
||||||
import type { ModerationBroadcaster } from "./moderation/types";
|
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 { discordPlayer } from "./player";
|
||||||
import { createAnalysisRoutes } from "./routes/analysisRoutes";
|
import { createAnalysisRoutes } from "./routes/analysisRoutes";
|
||||||
import { createMediaRoutes } from "./routes/mediaRoutes";
|
import { createMediaRoutes } from "./routes/mediaRoutes";
|
||||||
@@ -30,9 +36,6 @@ import { createRecordingsRoutes } from "./routes/recordingsRoutes";
|
|||||||
import { createSyncRoutes } from "./routes/syncRoutes";
|
import { createSyncRoutes } from "./routes/syncRoutes";
|
||||||
import { createUIStateRoutes } from "./routes/uiStateRoutes";
|
import { createUIStateRoutes } from "./routes/uiStateRoutes";
|
||||||
import { createVoiceRoutes } from "./routes/voiceRoutes";
|
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 __filename = fileURLToPath(import.meta.url);
|
||||||
const __dirname = path.dirname(__filename);
|
const __dirname = path.dirname(__filename);
|
||||||
@@ -54,26 +57,6 @@ type VoiceGlobals = typeof globalThis & {
|
|||||||
) => void;
|
) => 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(
|
export async function startWebserver(
|
||||||
port: number = 3000,
|
port: number = 3000,
|
||||||
_client: Client,
|
_client: Client,
|
||||||
@@ -119,7 +102,7 @@ export async function startWebserver(
|
|||||||
initialMusicVolume: mediaSettings.musicVolume,
|
initialMusicVolume: mediaSettings.musicVolume,
|
||||||
onMusicVolumeChange: async (volume) => {
|
onMusicVolumeChange: async (volume) => {
|
||||||
mediaSettings = { ...mediaSettings, musicVolume: volume };
|
mediaSettings = { ...mediaSettings, musicVolume: volume };
|
||||||
await setPersistedValue("media-settings", mediaSettings);
|
await persistMediaSettings(mediaSettings);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user