diff --git a/src/app/server/[ip]/page.tsx b/src/app/server/[ip]/page.tsx index 562eea7..1d81717 100644 --- a/src/app/server/[ip]/page.tsx +++ b/src/app/server/[ip]/page.tsx @@ -28,6 +28,19 @@ export default function Server() { setServer: app.setServer, messageStore: messageStore, onIndicator: addIndicator, + onVoiceJoin: (userId, channelId, voiceId) => + app.setVoiceConns((prev) => ({ + ...prev, + [channelId]: { ...prev[channelId], [userId]: voiceId }, + })), + onVoiceLeave: (userId, channelId) => + app.setVoiceConns((prev) => { + const { [userId]: _, ...remainingUsers } = prev[channelId] || {}; + return { + ...prev, + [channelId]: remainingUsers, + }; + }), }); }, [ip, messageStore.messages], diff --git a/src/components/channel/ChannelView.tsx b/src/components/channel/ChannelView.tsx index 8591a69..0fb7d6b 100644 --- a/src/components/channel/ChannelView.tsx +++ b/src/components/channel/ChannelView.tsx @@ -47,6 +47,7 @@ export default function ChannelView({ { while (serverRef.current?.CONNECTING) {} diff --git a/src/components/channel/voice/VoiceBox.tsx b/src/components/channel/voice/VoiceBox.tsx index da34051..388f661 100644 --- a/src/components/channel/voice/VoiceBox.tsx +++ b/src/components/channel/voice/VoiceBox.tsx @@ -6,13 +6,7 @@ import { Message } from "@/types/types"; import { useEffect, useState } from "react"; import { startMic } from "@/lib/audio"; import { Button } from "../../ui/button"; -import { - ChevronLeftIcon, - Phone, - PhoneCall, - PhoneOff, - Volume2Icon, -} from "lucide-react"; +import { ChevronLeftIcon, Phone, Volume2Icon } from "lucide-react"; import VoiceGrid from "./VoiceGrid"; export default function VoiceBox({ @@ -20,10 +14,12 @@ export default function VoiceBox({ app, channelName, sendRequest, + channelId, }: { + channelName?: string; app: App; sendRequest: (req: ClientMessage) => void; - channelName?: string; + channelId: string; messages: Message[]; indicators: IndicatorContext[]; sendVoice: (data: Int16Array) => void; @@ -54,25 +50,26 @@ export default function VoiceBox({ )} - + {app.voiceConns[channelId] && ( + ({ + id: userId, + speaking: false, + }) + )} + app={app} + /> + )}