From a063a70cfb9446211091273ae886c29c9e15e8ae Mon Sep 17 00:00:00 2001 From: Cole Miller Date: Sat, 27 Sep 2025 09:20:55 -0400 Subject: [PATCH] call: Play a different sound when a guest joins (#38987) Release Notes: - collab: A distinct sound effect is now used for when a guest joins a call. - collab: Fixed the "joined" sound being excessively loud when joining a call that already has many participants. --------- Co-authored-by: David Kleingeld --- assets/sounds/guest_joined_call.wav | Bin 0 -> 28806 bytes crates/audio/src/audio.rs | 2 ++ crates/call/src/call_impl/room.rs | 16 ++++++++++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 assets/sounds/guest_joined_call.wav diff --git a/assets/sounds/guest_joined_call.wav b/assets/sounds/guest_joined_call.wav new file mode 100644 index 0000000000000000000000000000000000000000..336a6ca754b09c408f63c411193157a20c14bb78 GIT binary patch literal 28806 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 &'static str { match self { Self::Joined => "joined_call", + Self::GuestJoined => "guest_joined_call", Self::Leave => "leave_call", Self::Mute => "mute", Self::Unmute => "unmute", diff --git a/crates/call/src/call_impl/room.rs b/crates/call/src/call_impl/room.rs index 0d44a82c577a841b988808c72bffcff01583b2c2..e659d1cf05b228423796d4c48906d568d71770d9 100644 --- a/crates/call/src/call_impl/room.rs +++ b/crates/call/src/call_impl/room.rs @@ -23,7 +23,7 @@ use livekit_client::{self as livekit, AudioStream, TrackSid}; use postage::{sink::Sink, stream::Stream, watch}; use project::Project; use settings::Settings as _; -use std::{future::Future, mem, rc::Rc, sync::Arc, time::Duration}; +use std::{future::Future, mem, rc::Rc, sync::Arc, time::Duration, time::Instant}; use util::{ResultExt, TryFutureExt, paths::PathStyle, post_inc}; pub const RECONNECT_TIMEOUT: Duration = Duration::from_secs(30); @@ -86,6 +86,7 @@ pub struct Room { room_update_completed_rx: watch::Receiver>, pending_room_update: Option>, maintain_connection: Option>>, + created: Instant, } impl EventEmitter for Room {} @@ -157,6 +158,7 @@ impl Room { maintain_connection: Some(maintain_connection), room_update_completed_tx, room_update_completed_rx, + created: cx.background_executor().now(), } } @@ -827,7 +829,17 @@ impl Room { }, ); - Audio::play_sound(Sound::Joined, cx); + // When joining a room start_room_connection gets + // called but we have already played the join sound. + // Dont play extra sounds over that. + if this.created.elapsed() > Duration::from_millis(100) { + if let proto::ChannelRole::Guest = role { + Audio::play_sound(Sound::GuestJoined, cx); + } else { + Audio::play_sound(Sound::Joined, cx); + } + } + if let Some(livekit_participants) = &livekit_participants && let Some(livekit_participant) = livekit_participants .get(&ParticipantIdentity(user.id.to_string()))