Fix deafening new participants (#28330)

Conrad Irwin created

Release Notes:

- Fixed an issue where new participants were not muted when the room was
deafened

Change summary

crates/call/src/call_impl/room.rs                    |  4 +-
crates/livekit_client/src/livekit_client.rs          | 17 ------------
crates/livekit_client/src/mock_client/publication.rs |  9 ------
crates/livekit_client/src/mock_client/track.rs       | 19 --------------
4 files changed, 2 insertions(+), 47 deletions(-)

Detailed changes

crates/call/src/call_impl/room.rs 🔗

@@ -944,8 +944,8 @@ impl Room {
                     )
                 })?;
                 if self.live_kit.as_ref().map_or(true, |kit| kit.deafened) {
-                    if matches!(track, livekit_client::RemoteTrack::Audio(_)) {
-                        track.set_enabled(false, cx);
+                    if publication.is_audio() {
+                        publication.set_enabled(false, cx);
                     }
                 }
                 match track {

crates/livekit_client/src/livekit_client.rs 🔗

@@ -255,23 +255,6 @@ impl RemoteTrackPublication {
     }
 }
 
-impl RemoteTrack {
-    pub fn set_enabled(&self, enabled: bool, cx: &App) {
-        let this = self.clone();
-        Tokio::spawn(cx, async move {
-            match this {
-                RemoteTrack::Audio(remote_audio_track) => {
-                    remote_audio_track.0.rtc_track().set_enabled(enabled)
-                }
-                RemoteTrack::Video(remote_video_track) => {
-                    remote_video_track.0.rtc_track().set_enabled(enabled)
-                }
-            }
-        })
-        .detach();
-    }
-}
-
 impl Participant {
     pub fn identity(&self) -> ParticipantIdentity {
         match self {

crates/livekit_client/src/mock_client/publication.rs 🔗

@@ -89,12 +89,3 @@ impl RemoteTrackPublication {
         }
     }
 }
-
-impl RemoteTrack {
-    pub fn set_enabled(&self, enabled: bool, _cx: &App) {
-        match self {
-            RemoteTrack::Audio(remote_audio_track) => remote_audio_track.set_enabled(enabled),
-            RemoteTrack::Video(remote_video_track) => remote_video_track.set_enabled(enabled),
-        }
-    }
-}

crates/livekit_client/src/mock_client/track.rs 🔗

@@ -43,23 +43,6 @@ impl RemoteAudioTrack {
             false
         }
     }
-
-    pub fn set_enabled(&self, enabled: bool) {
-        let Some(room) = self.room.upgrade() else {
-            return;
-        };
-        if enabled {
-            room.0
-                .lock()
-                .paused_audio_tracks
-                .remove(&self.server_track.sid);
-        } else {
-            room.0
-                .lock()
-                .paused_audio_tracks
-                .insert(self.server_track.sid.clone());
-        }
-    }
 }
 
 impl RemoteVideoTrack {
@@ -70,6 +53,4 @@ impl RemoteVideoTrack {
     pub fn publisher_id(&self) -> ParticipantIdentity {
         self.server_track.publisher_id.clone()
     }
-
-    pub(crate) fn set_enabled(&self, _enabled: bool) {}
 }