diff --git a/src/room/GroupCallView.tsx b/src/room/GroupCallView.tsx index dfc4ff196..2ee401656 100644 --- a/src/room/GroupCallView.tsx +++ b/src/room/GroupCallView.tsx @@ -80,17 +80,12 @@ export const GroupCallView: FC = ({ const memberships = useMatrixRTCSessionMemberships(rtcSession); const isJoined = useMatrixRTCSessionJoinState(rtcSession); - // The mute state reactively gets updated once the participant count reaches the threshold. - // The user then still is able to unmute again. - // The more common case is that the user is muted from the start (participant count is already over the threshold). - const autoMuteHappened = useRef(false); - useEffect(() => { - if (autoMuteHappened.current) return; - if (memberships.length >= MUTE_PARTICIPANT_COUNT) { + const participantMuteOnce = useCallback(() => { + if (memberships.length >= MUTE_PARTICIPANT_COUNT) muteStates.audio.setEnabled?.(false); - autoMuteHappened.current = true; - } - }, [autoMuteHappened, memberships, muteStates.audio]); + }, [memberships.length, muteStates.audio]); + + useEffect(() => participantMuteOnce(), [participantMuteOnce]); useEffect(() => { window.rtcSession = rtcSession;