From 04701065247d6d3468f3a39dfe7799052e1061e5 Mon Sep 17 00:00:00 2001 From: damencho Date: Fri, 4 Mar 2016 15:20:05 -0600 Subject: [PATCH 1/5] Shows and error dialog when we fail to install desktop sharing plugin for some reason. --- conference.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/conference.js b/conference.js index 201174586..5c4c62cbe 100644 --- a/conference.js +++ b/conference.js @@ -631,6 +631,16 @@ export default { this.videoSwitchInProgress = false; this.toggleScreenSharing(false); console.error('failed to share local desktop', err); + + let dialogTxt = APP.translation + .generateTranslationHTML("dialog.failtoinstall"); + let dialogTitle = APP.translation + .generateTranslationHTML("dialog.error"); + APP.UI.messageHandler.openDialog( + dialogTitle, + dialogTxt, + false + ); }); } else { createLocalTracks('video').then( From 413e5098c86e7e00abb9a89c73fd22f7d3fea6f4 Mon Sep 17 00:00:00 2001 From: damencho Date: Fri, 4 Mar 2016 15:21:07 -0600 Subject: [PATCH 2/5] Handles the error when user cancels desktop sharing window. --- conference.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conference.js b/conference.js index 5c4c62cbe..154a5219c 100644 --- a/conference.js +++ b/conference.js @@ -630,6 +630,10 @@ export default { }).catch((err) => { this.videoSwitchInProgress = false; this.toggleScreenSharing(false); + + if(err === TrackErrors.CHROME_EXTENSION_USER_CANCELED) + return; + console.error('failed to share local desktop', err); let dialogTxt = APP.translation From d78666a49d32523f2b99f41b96e313406f3e363c Mon Sep 17 00:00:00 2001 From: damencho Date: Fri, 4 Mar 2016 15:36:53 -0600 Subject: [PATCH 3/5] Removes listener to missing event and duplicate dialog code. --- conference.js | 4 ---- modules/UI/UI.js | 15 --------------- 2 files changed, 19 deletions(-) diff --git a/conference.js b/conference.js index 154a5219c..26f779b26 100644 --- a/conference.js +++ b/conference.js @@ -813,10 +813,6 @@ export default { APP.UI.updateDTMFSupport(isDTMFSupported); }); - room.on(ConferenceEvents.FIREFOX_EXTENSION_NEEDED, function (url) { - APP.UI.notifyFirefoxExtensionRequired(url); - }); - APP.UI.addListener(UIEvents.ROOM_LOCK_CLICKED, () => { if (room.isModerator()) { let promise = roomLocker.isLocked diff --git a/modules/UI/UI.js b/modules/UI/UI.js index 601dc7aba..f3abf3b79 100644 --- a/modules/UI/UI.js +++ b/modules/UI/UI.js @@ -736,21 +736,6 @@ UI.notifyConnectionFailed = function (stropheErrorMsg) { ); }; -/** - * Notify user that he need to install Firefox extension to share screen. - * @param {stirng} url extension url - */ -UI.notifyFirefoxExtensionRequired = function (url) { - messageHandler.openMessageDialog( - "dialog.extensionRequired", - null, - null, - APP.translation.generateTranslationHTML( - "dialog.firefoxExtensionPrompt", {url} - ) - ); -}; - /** * Notify user that he was automatically muted when joned the conference. */ From 3a933cfb84bdc2e1750908c7f506cc275f41a011 Mon Sep 17 00:00:00 2001 From: damencho Date: Fri, 4 Mar 2016 15:55:44 -0600 Subject: [PATCH 4/5] Avoids showing two warning dialogs when firefox extension is required and missing. --- conference.js | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/conference.js b/conference.js index 26f779b26..f698e317b 100644 --- a/conference.js +++ b/conference.js @@ -157,23 +157,6 @@ function createLocalTracks (...devices) { }); } -/** - * Create local screen sharing track. - * Shows UI notification if Firefox extension is required. - * @returns {Promise} - */ -function createDesktopTrack () { - return createLocalTracks('desktop').catch(function (err) { - if (err === TrackErrors.FIREFOX_EXTENSION_NEEDED) { - APP.UI.showExtensionRequiredDialog( - config.desktopSharingFirefoxExtensionURL - ); - } - - return Promise.reject(err); - }); -} - class ConferenceConnector { constructor(resolve, reject) { this._resolve = resolve; @@ -610,7 +593,7 @@ export default { this.videoSwitchInProgress = true; if (shareScreen) { - createDesktopTrack().then(([stream]) => { + createLocalTracks('desktop').then(([stream]) => { stream.on( TrackEvents.TRACK_STOPPED, () => { @@ -636,6 +619,13 @@ export default { console.error('failed to share local desktop', err); + if (err === TrackErrors.FIREFOX_EXTENSION_NEEDED) { + APP.UI.showExtensionRequiredDialog( + config.desktopSharingFirefoxExtensionURL + ); + return; + } + let dialogTxt = APP.translation .generateTranslationHTML("dialog.failtoinstall"); let dialogTitle = APP.translation From 45d997e9f1f4c240ad5969f4e4fb9c39c20456a4 Mon Sep 17 00:00:00 2001 From: damencho Date: Mon, 7 Mar 2016 12:57:12 -0600 Subject: [PATCH 5/5] Adds a comment to default error handling for desktop sharing. --- conference.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conference.js b/conference.js index f698e317b..a75e1f312 100644 --- a/conference.js +++ b/conference.js @@ -626,6 +626,10 @@ export default { return; } + // Handling: + // TrackErrors.CHROME_EXTENSION_INSTALLATION_ERROR + // TrackErrors.GENERAL + // and any other let dialogTxt = APP.translation .generateTranslationHTML("dialog.failtoinstall"); let dialogTitle = APP.translation