From 770a77a47345ab766742f305eab4465f98aabc63 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Mon, 27 Apr 2026 20:04:45 +0200 Subject: [PATCH] feat(voice-store): add cameraDeviceId persisted field --- packages/web/src/stores/voiceStore.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/web/src/stores/voiceStore.ts b/packages/web/src/stores/voiceStore.ts index 9e46aa9b..537bee8c 100644 --- a/packages/web/src/stores/voiceStore.ts +++ b/packages/web/src/stores/voiceStore.ts @@ -32,6 +32,7 @@ interface VoiceState { outputVolume: number; // 0-200 (100 = default) inputDeviceId: string; outputDeviceId: string; + cameraDeviceId: string | null; // null = auto-select on next camera enable focusedParticipantId: string | null; screenShareConfig: ScreenShareConfig; // Per-participant volume (userId → 0-200, 100 = default) @@ -87,6 +88,7 @@ interface VoiceState { setOutputVolume: (volume: number) => void; setInputDevice: (deviceId: string) => void; setOutputDevice: (deviceId: string) => void; + setCameraDeviceId: (deviceId: string | null) => void; pttActive: boolean; setMuted: (muted: boolean) => void; setPttActive: (active: boolean) => void; @@ -154,6 +156,7 @@ export const useVoiceStore = create()( outputVolume: 100, inputDeviceId: 'default', outputDeviceId: 'default', + cameraDeviceId: null, focusedParticipantId: null, screenShareConfig: { height: 720, fps: 60, mode: 'gaming', customBitrateKbps: null, shareAudio: !isElectron() }, participantVolumes: new Map(), @@ -314,9 +317,11 @@ export const useVoiceStore = create()( setOutputVolume: (volume) => set({ outputVolume: volume }), setInputDevice: (deviceId) => set({ inputDeviceId: deviceId }), - + setOutputDevice: (deviceId) => set({ outputDeviceId: deviceId }), + setCameraDeviceId: (deviceId) => set({ cameraDeviceId: deviceId }), + setMuted: (muted: boolean) => set({ isMuted: muted }), setPttActive: (active: boolean) => set({ pttActive: active }), @@ -561,6 +566,7 @@ export const useVoiceStore = create()( outputVolume: 100, inputDeviceId: 'default', outputDeviceId: 'default', + cameraDeviceId: null, focusedParticipantId: null, participantVolumes: new Map(), participantMutes: new Map(), @@ -658,6 +664,7 @@ export const useVoiceStore = create()( outputVolume: state.outputVolume, inputDeviceId: state.inputDeviceId, outputDeviceId: state.outputDeviceId, + cameraDeviceId: state.cameraDeviceId, screenShareConfig: state.screenShareConfig, echoCancellation: state.echoCancellation, autoGainControl: state.autoGainControl,