1
0

Track state at global peers for mute/videoOn

Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
James Ketrenos 2022-03-16 02:10:26 -07:00
parent 67e319e2c5
commit b1aeaffc59

View File

@ -95,6 +95,8 @@ const MediaAgent = ({setPeers}) => {
peers[peer_id] = { peers[peer_id] = {
name: peer_id, name: peer_id,
muted: false,
videoOn: true,
connection, connection,
initialized: false, initialized: false,
attributes: {} attributes: {}
@ -312,6 +314,8 @@ const MediaAgent = ({setPeers}) => {
peers[name] = { peers[name] = {
name: name, name: name,
local: true, local: true,
muted: true,
videoOn: false,
initialized: false, initialized: false,
attributes: { attributes: {
local: true, local: true,
@ -407,30 +411,30 @@ const MediaControl = ({isSelf, peer}) => {
const [muted, setMuted] = useState(undefined); const [muted, setMuted] = useState(undefined);
const [videoOn, setVideoOn] = useState(undefined); const [videoOn, setVideoOn] = useState(undefined);
/* local state is used to trigger re-renders, and the global
* state is kept up to date in the peers object so re-assignment
* of sessions doesn't kill the peer or change the mute/video states */
useEffect(() => { useEffect(() => {
if (!peer) { if (!peer) {
setMedia(undefined); setMedia(undefined);
return; return;
} }
if (peer.local) { setMuted(peer.muted);
setMuted(true); setVideoOn(peer.videoOn);
setVideoOn(false);
} else {
setMuted(false);
setVideoOn(true);
}
setMedia(peer); setMedia(peer);
}, [peer, setMedia, setMuted, setVideoOn]); }, [peer, setMedia, setMuted, setVideoOn]);
const toggleMute = (event) => { const toggleMute = (event) => {
if (debug) console.log(`MediaControl - toggleMute - ${peer.name}`, !muted); if (debug) console.log(`MediaControl - toggleMute - ${peer.name}`, !muted);
setMuted(!muted); peer.muted = !muted;
setMuted(peer.muted);
event.stopPropagation(); event.stopPropagation();
} }
const toggleVideo = (event) => { const toggleVideo = (event) => {
if (debug) console.log(`MediaControl - toggleVideo - ${peer.name}`, !videoOn); if (debug) console.log(`MediaControl - toggleVideo - ${peer.name}`, !videoOn);
setVideoOn(!videoOn); peer.videoOn = !videoOn;
setVideoOn(peer.videoOn);
event.stopPropagation(); event.stopPropagation();
} }