diff --git a/app/lib/components/Filmstrip.jsx b/app/lib/components/Filmstrip.jsx index 01552e4..54a46e1 100644 --- a/app/lib/components/Filmstrip.jsx +++ b/app/lib/components/Filmstrip.jsx @@ -16,13 +16,14 @@ class Filmstrip extends Component state = { selectedPeerName : null, + lastSpeaker : null, width : 400 }; // Find the name of the peer which is currently speaking. This is either // the latest active speaker, or the manually selected peer. getActivePeerName = () => - this.state.selectedPeerName || this.props.activeSpeakerName; + this.state.selectedPeerName || this.state.lastSpeaker; isSharingCamera = (peerName) => this.props.peers[peerName] && this.props.peers[peerName].consumers.some((consumer) => @@ -61,17 +62,13 @@ class Filmstrip extends Component } }; - componentDidMount() - { - this.updateDimensions(); - } - componentDidMount() { window.addEventListener('resize', this.updateDimensions); const observer = new ResizeObserver(this.updateDimensions); observer.observe(this.activePeerContainer.current); + this.updateDimensions(); } componentWillUnmount() @@ -84,6 +81,14 @@ class Filmstrip extends Component if (prevProps !== this.props) { this.updateDimensions(); + + if (this.props.activeSpeakerName !== this.props.myName) + { + // eslint-disable-next-line react/no-did-update-set-state + this.setState({ + lastSpeaker : this.props.activeSpeakerName + }); + } } } @@ -97,7 +102,7 @@ class Filmstrip extends Component render() { - const { activeSpeakerName, peers, advancedMode } = this.props; + const { peers, advancedMode } = this.props; const activePeerName = this.getActivePeerName(); @@ -107,7 +112,10 @@ class Filmstrip extends Component {peers[activePeerName] && (