fix: resolve LiveKit voice/video stability issues
- Guard Disconnected/ConnectionStateChanged event handlers against stale rooms: old room events no longer nuke the new room's state (root cause of buttons failing, mute getting stuck, DUPLICATE_IDENTITY cascades) - Reset media state (isMuted/isCameraOn/isScreenSharing) on connect to prevent desync after reconnects - Add voiceStates to WS ready payload so users see who's in voice on page load - Wire VoiceControls buttons to check getActiveRoom() before SDK calls - Guard ChannelSidebar against re-joining the same voice channel - Switch LIVEKIT_URL to wss://nova.ddns.net/livekit for HTTPS secure context (required for getUserMedia in Safari)
This commit is contained in:
@@ -38,13 +38,10 @@ export function AppLayout() {
|
||||
|
||||
const currentVoiceChannelId = useVoiceStore((s) => s.currentVoiceChannelId);
|
||||
const setParticipants = useVoiceStore((s) => s.setParticipants);
|
||||
const {
|
||||
connect: connectVoice,
|
||||
disconnect: disconnectVoice,
|
||||
const {
|
||||
connect: connectVoice,
|
||||
disconnect: disconnectVoice,
|
||||
participants: voiceParticipants,
|
||||
toggleMic,
|
||||
toggleCamera,
|
||||
toggleScreenShare
|
||||
} = useLiveKit();
|
||||
|
||||
// Initialize WebSocket
|
||||
@@ -118,11 +115,7 @@ export function AppLayout() {
|
||||
{/* Server sidebar - always visible on desktop, toggled on mobile */}
|
||||
<div className={`${isMobile ? `fixed z-40 h-full transition-transform ${sidebarOpen ? 'translate-x-0' : '-translate-x-full'}` : 'flex h-full'}`}>
|
||||
<ServerSidebar />
|
||||
<ChannelSidebar
|
||||
onToggleMic={toggleMic}
|
||||
onToggleCamera={toggleCamera}
|
||||
onToggleScreenShare={toggleScreenShare}
|
||||
/>
|
||||
<ChannelSidebar />
|
||||
</div>
|
||||
|
||||
{/* Main content area */}
|
||||
|
||||
Reference in New Issue
Block a user