From 379f786225cc1a531488fe2cd09e1432087c420e Mon Sep 17 00:00:00 2001 From: isymchych Date: Fri, 5 Feb 2016 17:04:48 +0200 Subject: [PATCH] handle FOCUS_LEFT conference error --- conference.js | 6 +++++- lang/main.json | 1 + modules/UI/UI.js | 33 ++++++++++++++++++++++++++++----- modules/util/helpers.js | 7 +++++++ 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/conference.js b/conference.js index 81470f3bc..3f3c3dce4 100644 --- a/conference.js +++ b/conference.js @@ -146,7 +146,7 @@ class ConferenceConnector { break; case ConferenceErrors.GRACEFUL_SHUTDOWN: - APP.UI.notifyGracefulShudown(); + APP.UI.notifyGracefulShutdown(); break; case ConferenceErrors.JINGLE_FATAL_ERROR: @@ -168,6 +168,10 @@ class ConferenceConnector { } break; + case ConferenceErrors.FOCUS_LEFT: + APP.UI.notifyFocusLeft(); + break; + default: this._handleConferenceFailed(err, ...params); } diff --git a/lang/main.json b/lang/main.json index c77dbe65d..ebea89f20 100644 --- a/lang/main.json +++ b/lang/main.json @@ -143,6 +143,7 @@ "failtoinstall": "Failed to install desktop sharing extension", "failedpermissions": "Failed to obtain permissions to use the local microphone and/or camera.", "bridgeUnavailable": "Jitsi Videobridge is currently unavailable. Please try again later!", + "jicofoUnavailable": "Jicofo is currently unavailable. Please try again later!", "lockTitle": "Lock failed", "lockMessage": "Failed to lock the conference.", "warning": "Warning", diff --git a/modules/UI/UI.js b/modules/UI/UI.js index 4d13afa87..653ee6564 100644 --- a/modules/UI/UI.js +++ b/modules/UI/UI.js @@ -18,6 +18,7 @@ import EtherpadManager from './etherpad/Etherpad'; import VideoLayout from "./videolayout/VideoLayout"; import SettingsMenu from "./side_pannels/settings/SettingsMenu"; import Settings from "./../settings/Settings"; +import { reload } from '../util/helpers'; var EventEmitter = require("events"); UI.messageHandler = require("./util/MessageHandler"); @@ -136,7 +137,7 @@ function toggleFullScreen () { /** * Notify user that server has shut down. */ -UI.notifyGracefulShudown = function () { +UI.notifyGracefulShutdown = function () { messageHandler.openMessageDialog( 'dialog.serviceUnavailable', 'dialog.gracefulShutdown' @@ -635,7 +636,7 @@ UI.showLoginPopup = function(callback) { ''; - UI.messageHandler.openTwoButtonDialog(null, null, null, message, + messageHandler.openTwoButtonDialog(null, null, null, message, true, "dialog.Ok", function (e, v, m, f) { @@ -965,17 +966,39 @@ UI.notifyTokenAuthFailed = function () { }; UI.notifyInternalError = function () { - UI.messageHandler.showError("dialog.sorry", "dialog.internalError"); + messageHandler.showError("dialog.sorry", "dialog.internalError"); }; UI.notifyFocusDisconnected = function (focus, retrySec) { - UI.messageHandler.notify( + messageHandler.notify( null, "notify.focus", 'disconnected', "notify.focusFail", {component: focus, ms: retrySec} ); }; +/** + * Notify user that focus left the conference so page should be reloaded. + */ +UI.notifyFocusLeft = function () { + let title = APP.translation.generateTranslationHTML( + 'dialog.serviceUnavailable' + ); + let msg = APP.translation.generateTranslationHTML( + 'dialog.jicofoUnavailable' + ); + messageHandler.openDialog( + title, + msg, + true, // persistent + [{title: 'retry'}], + function () { + reload(); + return false; + } + ); +}; + /** * Updates auth info on the UI. * @param {boolean} isAuthEnabled if authentication is enabled @@ -1030,7 +1053,7 @@ UI.getLargeVideoID = function () { * Shows dialog with a link to FF extension. */ UI.showExtensionRequiredDialog = function (url) { - APP.UI.messageHandler.openMessageDialog( + messageHandler.openMessageDialog( "dialog.extensionRequired", null, null, diff --git a/modules/util/helpers.js b/modules/util/helpers.js index 8993189c4..120ba7720 100644 --- a/modules/util/helpers.js +++ b/modules/util/helpers.js @@ -12,3 +12,10 @@ export function createDeferred () { return deferred; } + +/** + * Reload page. + */ +export function reload () { + window.location.reload(); +}