diff --git a/src/app/voice.ts b/src/app/voice.ts index 3978adff..2a952474 100644 --- a/src/app/voice.ts +++ b/src/app/voice.ts @@ -134,6 +134,15 @@ const onActiveSpeakersChanged = (participants: {identity: string}[]) => { speakingPubkeys.set(new Set(participants.map(p => p.identity))) } +const playJoinSound = () => { + const audio = new Audio("/join-voice-room.mp3") + audio.play().catch(() => {}) +} + +const onParticipantConnected = () => { + playJoinSound() +} + export const joinVoiceRoom = async ( url: string, h: string, @@ -150,6 +159,7 @@ export const joinVoiceRoom = async ( const room = new Room({adaptiveStream: true, dynacast: true}) room.on(RoomEvent.Disconnected, onRoomDisconnected) + room.on(RoomEvent.ParticipantConnected, onParticipantConnected) room.on(RoomEvent.TrackSubscribed, onTrackSubscribed) room.on(RoomEvent.TrackUnsubscribed, onTrackUnsubscribed) room.on(RoomEvent.ActiveSpeakersChanged, onActiveSpeakersChanged) @@ -179,12 +189,17 @@ export const joinVoiceRoom = async ( currentVoiceSession.set({url, h, room, muted}) startPresenceHeartbeat(url, h) + + playJoinSound() } export const leaveVoiceRoom = async () => { const session = get(currentVoiceSession) if (!session) return + const audio = new Audio("/leave-voice-room.mp3") + audio.play().catch(() => {}) + speakingPubkeys.set(new Set()) stopPresenceHeartbeat() session.room.disconnect() diff --git a/static/join-voice-room.mp3 b/static/join-voice-room.mp3 new file mode 100644 index 00000000..ed4f91e6 Binary files /dev/null and b/static/join-voice-room.mp3 differ diff --git a/static/leave-voice-room.mp3 b/static/leave-voice-room.mp3 new file mode 100644 index 00000000..44cab189 Binary files /dev/null and b/static/leave-voice-room.mp3 differ