diff --git a/conference.js b/conference.js index 2a0470d84..f39ba2e24 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.LOCAL_TRACK_STOPPED, () => { @@ -630,7 +613,32 @@ 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); + + if (err === TrackErrors.FIREFOX_EXTENSION_NEEDED) { + APP.UI.showExtensionRequiredDialog( + config.desktopSharingFirefoxExtensionURL + ); + return; + } + + // Handling: + // TrackErrors.CHROME_EXTENSION_INSTALLATION_ERROR + // TrackErrors.GENERAL + // and any other + 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( @@ -799,10 +807,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. */