diff --git a/bigbluebutton-html5/imports/ui/components/media/container.jsx b/bigbluebutton-html5/imports/ui/components/media/container.jsx index e890e75c0884f07b96bae1afb9dd06657f91f59f..79c9b80e30667a2c3686c26bb0b06feeeb02c3d4 100755 --- a/bigbluebutton-html5/imports/ui/components/media/container.jsx +++ b/bigbluebutton-html5/imports/ui/components/media/container.jsx @@ -122,7 +122,7 @@ export default withModalMounter(withTracker(() => { data.children = <ScreenshareContainer />; } - const usersVideo = VideoService.getVideoStreams(); + const { streams: usersVideo } = VideoService.getVideoStreams(); data.usersVideo = usersVideo; if (MediaService.shouldShowOverlay() && usersVideo.length && viewParticipantsWebcams) { diff --git a/bigbluebutton-html5/imports/ui/components/video-provider/component.jsx b/bigbluebutton-html5/imports/ui/components/video-provider/component.jsx index dc716a0e72b3f9c6589626add30d6cef4870f7ef..dbfb46a352a439412850d0a6e1b6dcf8809c216d 100755 --- a/bigbluebutton-html5/imports/ui/components/video-provider/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/video-provider/component.jsx @@ -282,7 +282,7 @@ class VideoProvider extends Component { this.disconnectStreams(streamsToDisconnect); if (CAMERA_QUALITY_THRESHOLDS_ENABLED) { - this.updateThreshold(streams.length); + this.updateThreshold(this.props.totalNumberOfStreams); } } diff --git a/bigbluebutton-html5/imports/ui/components/video-provider/container.jsx b/bigbluebutton-html5/imports/ui/components/video-provider/container.jsx index 9d8c402a3dcb8b61afa8f50e5afe083c3d4daeae..34852e82867ebbd9dfbcd01cf86639fb56a6f7cd 100755 --- a/bigbluebutton-html5/imports/ui/components/video-provider/container.jsx +++ b/bigbluebutton-html5/imports/ui/components/video-provider/container.jsx @@ -8,9 +8,22 @@ const VideoProviderContainer = ({ children, ...props }) => { return (!streams.length ? null : <VideoProvider {...props}>{children}</VideoProvider>); }; -export default withTracker(props => ({ - swapLayout: props.swapLayout, - streams: VideoService.getVideoStreams(), - isUserLocked: VideoService.isUserLocked(), - currentVideoPageIndex: VideoService.getCurrentVideoPageIndex(), -}))(VideoProviderContainer); +export default withTracker(props => { + // getVideoStreams returns a dictionary consisting of: + // { + // streams: array of mapped streams + // totalNumberOfStreams: total number of shared streams in the server + // } + const { + streams, + totalNumberOfStreams + } = VideoService.getVideoStreams(); + + return { + swapLayout: props.swapLayout, + streams, + totalNumberOfStreams, + isUserLocked: VideoService.isUserLocked(), + currentVideoPageIndex: VideoService.getCurrentVideoPageIndex(), + }; +})(VideoProviderContainer); diff --git a/bigbluebutton-html5/imports/ui/components/video-provider/service.js b/bigbluebutton-html5/imports/ui/components/video-provider/service.js index 5a802a1221d4a7e0dff229e2e06968635b66dbe5..019c23b5d9df04c482d0561417e5aaed6b48a2ae 100755 --- a/bigbluebutton-html5/imports/ui/components/video-provider/service.js +++ b/bigbluebutton-html5/imports/ui/components/video-provider/service.js @@ -291,11 +291,11 @@ class VideoService { // is equivalent to disabling it), so return the mapped streams as they are // which produces the original non paginated behaviour if (!PAGINATION_ENABLED || pageSize === 0) { - return mappedStreams; + return { streams: mappedStreams, totalNumberOfStreams: mappedStreams.length }; }; const paginatedStreams = this.getVideoPage(mappedStreams, pageSize); - return paginatedStreams; + return { streams: paginatedStreams, totalNumberOfStreams: mappedStreams.length }; } getConnectingStream(streams) {