diff --git a/packages/web/src/components/layout/MobileVoiceFullScreen.tsx b/packages/web/src/components/layout/MobileVoiceFullScreen.tsx index 38390090..7c239316 100644 --- a/packages/web/src/components/layout/MobileVoiceFullScreen.tsx +++ b/packages/web/src/components/layout/MobileVoiceFullScreen.tsx @@ -6,6 +6,8 @@ import { useAuthStore } from '../../stores/authStore'; import { Avatar } from '../ui/Avatar'; import { useContextMenuStore, type ContextMenuItem } from '../../stores/contextMenuStore'; import { buildVoiceModMenuItems, VolumeSliderItem } from '../voice/voiceMenuItems'; +import { wsSend } from '../../hooks/useWebSocket'; +import { getChannelOrigin } from '../../stores/spaceStore'; export function MobileVoiceFullScreen() { const popMobileScreen = useUIStore((s) => s.popMobileScreen); @@ -96,8 +98,14 @@ export function MobileVoiceFullScreen() { }; const handleDisconnect = () => { - leaveVoice(); - const disconnectFn = useVoiceStore.getState().disconnectFn; + const { activeDmCall, disconnectFn } = useVoiceStore.getState(); + if (activeDmCall) { + wsSend({ type: 'dm_call_end', dmChannelId: activeDmCall.dmChannelId }, getChannelOrigin(activeDmCall.dmChannelId)); + useVoiceStore.getState().setActiveDmCall(null); + } else if (currentVoiceChannelId) { + wsSend({ type: 'voice_leave' }, getChannelOrigin(currentVoiceChannelId)); + leaveVoice(); + } if (disconnectFn) disconnectFn(); popMobileScreen(); }; diff --git a/packages/web/src/components/layout/MobileVoiceMiniBar.tsx b/packages/web/src/components/layout/MobileVoiceMiniBar.tsx index f0f3869d..b5790c3d 100644 --- a/packages/web/src/components/layout/MobileVoiceMiniBar.tsx +++ b/packages/web/src/components/layout/MobileVoiceMiniBar.tsx @@ -1,7 +1,8 @@ import React from 'react'; import { useUIStore } from '../../stores/uiStore'; import { useVoiceStore } from '../../stores/voiceStore'; -import { useSpaceStore } from '../../stores/spaceStore'; +import { useSpaceStore, getChannelOrigin } from '../../stores/spaceStore'; +import { wsSend } from '../../hooks/useWebSocket'; export function MobileVoiceMiniBar() { const pushMobileScreen = useUIStore((s) => s.pushMobileScreen); @@ -92,7 +93,18 @@ export function MobileVoiceMiniBar() {