diff --git a/src/components/views/voip/VideoFeed.tsx b/src/components/views/voip/VideoFeed.tsx index 9e9fbeb810..effefa1681 100644 --- a/src/components/views/voip/VideoFeed.tsx +++ b/src/components/views/voip/VideoFeed.tsx @@ -60,14 +60,30 @@ export default class VideoFeed extends React.Component { } componentDidMount() { - this.props.feed.addListener(CallFeedEvent.NewStream, this.onNewStream); + this.updateFeed(null, this.props.feed); this.playMedia(); } componentWillUnmount() { - this.props.feed.removeListener(CallFeedEvent.NewStream, this.onNewStream); + this.updateFeed(this.props.feed, null); this.element.current?.removeEventListener('resize', this.onResize); - this.stopMedia(); + } + + componentDidUpdate(prevProps: IProps) { + this.updateFeed(prevProps.feed, this.props.feed); + } + + private updateFeed(oldFeed: CallFeed, newFeed: CallFeed) { + if (oldFeed === newFeed) return; + + if (oldFeed) { + this.props.feed.removeListener(CallFeedEvent.NewStream, this.onNewStream); + this.stopMedia(); + } + if (newFeed) { + this.props.feed.addListener(CallFeedEvent.NewStream, this.onNewStream); + this.playMedia(); + } } private playMedia() {