Track state at global peers for mute/videoOn
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
parent
67e319e2c5
commit
b1aeaffc59
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user