From 419950ca497fab33ed88b83a5f8b6b237f259759 Mon Sep 17 00:00:00 2001 From: paweldomas Date: Thu, 22 Sep 2016 12:37:14 -0500 Subject: [PATCH] fix(VideoLayout): "connection interrupted" shown only on video The message about having connectivity issues should be displayed only on top of the video like the "video problems filter" is. --- modules/UI/videolayout/LargeVideoManager.js | 48 +++++++++++++++++++++ modules/UI/videolayout/VideoLayout.js | 20 +++------ 2 files changed, 53 insertions(+), 15 deletions(-) diff --git a/modules/UI/videolayout/LargeVideoManager.js b/modules/UI/videolayout/LargeVideoManager.js index 54bc097ef..e0934ee74 100644 --- a/modules/UI/videolayout/LargeVideoManager.js +++ b/modules/UI/videolayout/LargeVideoManager.js @@ -81,6 +81,27 @@ export default class LargeVideoManager { container.onHoverOut(e); } + /** + * Called when the media connection has been interrupted. + */ + onVideoInterrupted () { + this.enableVideoProblemFilter(true); + let reconnectingKey = "connection.RECONNECTING"; + $('#videoConnectionMessage') + .attr("data-i18n", reconnectingKey) + .text(APP.translation.translateString(reconnectingKey)); + // Show the message only if the video is currently being displayed + this.showVideoConnectionMessage(this.state === VIDEO_CONTAINER_TYPE); + } + + /** + * Called when the media connection has been restored. + */ + onVideoRestored () { + this.enableVideoProblemFilter(false); + this.showVideoConnectionMessage(false); + } + get id () { let container = this.getContainer(this.state); return container.id; @@ -231,6 +252,24 @@ export default class LargeVideoManager { $('.watermark').css('visibility', show ? 'visible' : 'hidden'); } + /** + * Shows/hides the "video connection message". + * @param {boolean|null} show(optional) tells whether the message is to be + * displayed or not. If missing the condition will be based on the value + * obtained from {@link APP.conference.isConnectionInterrupted}. + */ + showVideoConnectionMessage (show) { + if (typeof show !== 'boolean') { + show = APP.conference.isConnectionInterrupted(); + } + + if (show) { + $('#videoConnectionMessage').css({display: "block"}); + } else { + $('#videoConnectionMessage').css({display: "none"}); + } + } + /** * Add container of specified type. * @param {string} type container type @@ -284,8 +323,12 @@ export default class LargeVideoManager { } let oldContainer = this.containers[this.state]; + // FIXME when video is being replaced with other content we need to hide + // companion icons/messages. It would be best if the container would + // be taking care of it by itself, but that is a bigger refactoring if (this.state === VIDEO_CONTAINER_TYPE) { this.showWatermark(false); + this.showVideoConnectionMessage(false); } oldContainer.hide(); @@ -294,7 +337,12 @@ export default class LargeVideoManager { return container.show().then(() => { if (type === VIDEO_CONTAINER_TYPE) { + // FIXME when video appears on top of other content we need to + // show companion icons/messages. It would be best if + // the container would be taking care of it by itself, but that + // is a bigger refactoring this.showWatermark(true); + this.showVideoConnectionMessage(/* fetch the current state */); } }); } diff --git a/modules/UI/videolayout/VideoLayout.js b/modules/UI/videolayout/VideoLayout.js index 78f8db9c6..cc4593469 100644 --- a/modules/UI/videolayout/VideoLayout.js +++ b/modules/UI/videolayout/VideoLayout.js @@ -950,28 +950,18 @@ var VideoLayout = { * Indicates that the video has been interrupted. */ onVideoInterrupted () { - this.enableVideoProblemFilter(true); - let reconnectingKey = "connection.RECONNECTING"; - $('#videoConnectionMessage') - .attr("data-i18n", reconnectingKey) - .text(APP.translation.translateString(reconnectingKey)) - .css({display: "block"}); + if (largeVideo) { + largeVideo.onVideoInterrupted(); + } }, /** * Indicates that the video has been restored. */ onVideoRestored () { - this.enableVideoProblemFilter(false); - $('#videoConnectionMessage').css({display: "none"}); - }, - - enableVideoProblemFilter (enable) { - if (!largeVideo) { - return; + if (largeVideo) { + largeVideo.onVideoRestored(); } - - largeVideo.enableVideoProblemFilter(enable); }, isLargeVideoVisible () {