From 6e25f32f4b8844c4b5c2d5e3de8302fd0696c086 Mon Sep 17 00:00:00 2001 From: Jon Date: Mon, 12 Jul 2021 17:12:08 +0100 Subject: [PATCH] fix setting setSubscribedTracks when null --- .../shared/contexts/ParticipantsProvider.js | 21 +++++++++++++++++++ dailyjs/shared/contexts/TracksProvider.js | 5 ++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/dailyjs/shared/contexts/ParticipantsProvider.js b/dailyjs/shared/contexts/ParticipantsProvider.js index fbf0bda..6fc344c 100644 --- a/dailyjs/shared/contexts/ParticipantsProvider.js +++ b/dailyjs/shared/contexts/ParticipantsProvider.js @@ -123,6 +123,25 @@ export const ParticipantsProvider = ({ children }) => { */ const username = callObject?.participants()?.local?.user_name ?? ''; + const [muteNewParticipants, setMuteNewParticipants] = useState(false); + + const muteAll = useCallback( + (muteFutureParticipants = false) => { + if (!localParticipant.isOwner) return; + setMuteNewParticipants(muteFutureParticipants); + const unmutedParticipants = participants.filter( + (p) => !p.isLocal && !p.isMicMuted + ); + if (!unmutedParticipants.length) return; + const result = unmutedParticipants.reduce( + (o, p) => ({ ...o[p.id], setAudio: false }), + {} + ); + callObject.updateParticipants(result); + }, + [callObject, localParticipant, participants] + ); + /** * Sets the local participant's name in daily-js * @param name The new username @@ -227,6 +246,8 @@ export const ParticipantsProvider = ({ children }) => { participantMarkedForRemoval, participants, screens, + muteNewParticipants, + muteAll, setParticipantMarkedForRemoval, setUsername, swapParticipantPosition, diff --git a/dailyjs/shared/contexts/TracksProvider.js b/dailyjs/shared/contexts/TracksProvider.js index c9d2531..6f48f1d 100644 --- a/dailyjs/shared/contexts/TracksProvider.js +++ b/dailyjs/shared/contexts/TracksProvider.js @@ -238,7 +238,10 @@ export const TracksProvider = ({ children }) => { } if (rtcpeers?.getCurrentType?.() === 'peer-to-peer') { - result.setSubscribedTracks.video = true; + result.setSubscribedTracks = { + ...result.setSubscribedTracks, + video: true, + }; } return { [id]: result }; }, {});