Never clear big film in Filmstrip view
parent
86f0d56f00
commit
32366163db
|
|
@ -16,13 +16,14 @@ class Filmstrip extends Component
|
||||||
|
|
||||||
state = {
|
state = {
|
||||||
selectedPeerName : null,
|
selectedPeerName : null,
|
||||||
|
lastSpeaker : null,
|
||||||
width : 400
|
width : 400
|
||||||
};
|
};
|
||||||
|
|
||||||
// Find the name of the peer which is currently speaking. This is either
|
// Find the name of the peer which is currently speaking. This is either
|
||||||
// the latest active speaker, or the manually selected peer.
|
// the latest active speaker, or the manually selected peer.
|
||||||
getActivePeerName = () =>
|
getActivePeerName = () =>
|
||||||
this.state.selectedPeerName || this.props.activeSpeakerName;
|
this.state.selectedPeerName || this.state.lastSpeaker;
|
||||||
|
|
||||||
isSharingCamera = (peerName) => this.props.peers[peerName] &&
|
isSharingCamera = (peerName) => this.props.peers[peerName] &&
|
||||||
this.props.peers[peerName].consumers.some((consumer) =>
|
this.props.peers[peerName].consumers.some((consumer) =>
|
||||||
|
|
@ -61,17 +62,13 @@ class Filmstrip extends Component
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
componentDidMount()
|
|
||||||
{
|
|
||||||
this.updateDimensions();
|
|
||||||
}
|
|
||||||
|
|
||||||
componentDidMount()
|
componentDidMount()
|
||||||
{
|
{
|
||||||
window.addEventListener('resize', this.updateDimensions);
|
window.addEventListener('resize', this.updateDimensions);
|
||||||
const observer = new ResizeObserver(this.updateDimensions);
|
const observer = new ResizeObserver(this.updateDimensions);
|
||||||
|
|
||||||
observer.observe(this.activePeerContainer.current);
|
observer.observe(this.activePeerContainer.current);
|
||||||
|
this.updateDimensions();
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount()
|
componentWillUnmount()
|
||||||
|
|
@ -84,6 +81,14 @@ class Filmstrip extends Component
|
||||||
if (prevProps !== this.props)
|
if (prevProps !== this.props)
|
||||||
{
|
{
|
||||||
this.updateDimensions();
|
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()
|
render()
|
||||||
{
|
{
|
||||||
const { activeSpeakerName, peers, advancedMode } = this.props;
|
const { peers, advancedMode } = this.props;
|
||||||
|
|
||||||
const activePeerName = this.getActivePeerName();
|
const activePeerName = this.getActivePeerName();
|
||||||
|
|
||||||
|
|
@ -107,7 +112,10 @@ class Filmstrip extends Component
|
||||||
{peers[activePeerName] && (
|
{peers[activePeerName] && (
|
||||||
<div
|
<div
|
||||||
className='active-peer'
|
className='active-peer'
|
||||||
style={{ width: this.state.width, height: this.state.width / this.getRatio() }}
|
style={{
|
||||||
|
width : this.state.width,
|
||||||
|
height : this.state.width / this.getRatio()
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<Peer
|
<Peer
|
||||||
advancedMode={advancedMode}
|
advancedMode={advancedMode}
|
||||||
|
|
@ -125,7 +133,7 @@ class Filmstrip extends Component
|
||||||
onClick={() => this.handleSelectPeer(peerName)}
|
onClick={() => this.handleSelectPeer(peerName)}
|
||||||
className={classnames('film', {
|
className={classnames('film', {
|
||||||
selected : this.state.selectedPeerName === peerName,
|
selected : this.state.selectedPeerName === peerName,
|
||||||
active : activeSpeakerName === peerName
|
active : this.state.lastSpeaker === peerName
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<div className='film-content'>
|
<div className='film-content'>
|
||||||
|
|
@ -147,14 +155,16 @@ Filmstrip.propTypes = {
|
||||||
activeSpeakerName : PropTypes.string,
|
activeSpeakerName : PropTypes.string,
|
||||||
advancedMode : PropTypes.bool,
|
advancedMode : PropTypes.bool,
|
||||||
peers : PropTypes.object.isRequired,
|
peers : PropTypes.object.isRequired,
|
||||||
consumers : PropTypes.object.isRequired
|
consumers : PropTypes.object.isRequired,
|
||||||
|
myName : PropTypes.string.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
const mapStateToProps = (state) =>
|
const mapStateToProps = (state) =>
|
||||||
({
|
({
|
||||||
activeSpeakerName : state.room.activeSpeakerName,
|
activeSpeakerName : state.room.activeSpeakerName,
|
||||||
peers : state.peers,
|
peers : state.peers,
|
||||||
consumers : state.consumers
|
consumers : state.consumers,
|
||||||
|
myName : state.me.name
|
||||||
});
|
});
|
||||||
|
|
||||||
export default connect(
|
export default connect(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue