From 8fa87c280732d78b2e100962e022107a5bd18ee0 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Fri, 11 Dec 2015 15:20:15 -0200 Subject: [PATCH] Prompt users to install extentions to enable screen sharing --- i18n/en.i18n.json | 3 ++ .../rocketchat-ui-master/master/main.html | 1 + .../views/app/videoCall/videoCall.coffee | 4 +-- .../views/app/videoCall/videoCall.html | 2 +- packages/rocketchat-webrtc/WebRTCClass.coffee | 32 +++++++++++++++++-- 5 files changed, 36 insertions(+), 6 deletions(-) diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 426e1ae7cb0d..defdb3b39305 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -494,6 +494,9 @@ "Username_Change_Disabled" : "Your Rocket.Chat administrator has disabled the changing of usernames", "Username_description" : "The username is used to allow others to mention you in messages.", "Username_invalid" : "%s is not a valid username,
use only letters, numbers, dots and dashes", + "Screen_Share" : "Screen Share", + "You_need_install_an_extension_to_allow_screen_sharing" : "You need install an extension to allow screen sharing", + "Install_Extension" : "Install Extension", "Username_title" : "Register username", "Username_unavaliable" : "%s is already in use :(", "Users" : "Users", diff --git a/packages/rocketchat-ui-master/master/main.html b/packages/rocketchat-ui-master/master/main.html index 4219a22d7228..abf74f660a88 100644 --- a/packages/rocketchat-ui-master/master/main.html +++ b/packages/rocketchat-ui-master/master/main.html @@ -13,6 +13,7 @@ + diff --git a/packages/rocketchat-ui/views/app/videoCall/videoCall.coffee b/packages/rocketchat-ui/views/app/videoCall/videoCall.coffee index a3431aa73a0f..d0ac0bab637e 100644 --- a/packages/rocketchat-ui/views/app/videoCall/videoCall.coffee +++ b/packages/rocketchat-ui/views/app/videoCall/videoCall.coffee @@ -29,8 +29,8 @@ Template.videoCall.helpers audioAndVideoEnabled: -> return WebRTC.getInstanceByRoomId(Session.get('openedRoom')).audioEnabled.get() and WebRTC.getInstanceByRoomId(Session.get('openedRoom')).videoEnabled.get() - screenShareAvaliable: -> - return WebRTC.getInstanceByRoomId(Session.get('openedRoom')).screenShareAvaliable + screenShareAvailable: -> + return WebRTC.getInstanceByRoomId(Session.get('openedRoom')).screenShareAvailable screenShareEnabled: -> return WebRTC.getInstanceByRoomId(Session.get('openedRoom')).screenShareEnabled.get() diff --git a/packages/rocketchat-ui/views/app/videoCall/videoCall.html b/packages/rocketchat-ui/views/app/videoCall/videoCall.html index bf473be61e6d..38ed5e6d774a 100644 --- a/packages/rocketchat-ui/views/app/videoCall/videoCall.html +++ b/packages/rocketchat-ui/views/app/videoCall/videoCall.html @@ -43,7 +43,7 @@ {{else}} {{/if}} - {{#if screenShareAvaliable}} + {{#if screenShareAvailable}} {{#if screenShareEnabled}} {{else}} diff --git a/packages/rocketchat-webrtc/WebRTCClass.coffee b/packages/rocketchat-webrtc/WebRTCClass.coffee index ffa9785b84b2..eee787913b41 100644 --- a/packages/rocketchat-webrtc/WebRTCClass.coffee +++ b/packages/rocketchat-webrtc/WebRTCClass.coffee @@ -135,8 +135,15 @@ class WebRTCClass @monitor = false @autoAccept = false - @navigator = if navigator.mozGetUserMedia? then 'firefox' else 'chrome' - @screenShareAvaliable = document.cookie.includes('rocketchatscreenshare=chrome') is true or window.rocketchatscreenshare is 'firefox' + @navigator = undefined + if navigator.userAgent.toLocaleLowerCase().indexOf('chrome') > -1 + @navigator = 'chrome' + else if navigator.userAgent.toLocaleLowerCase().indexOf('firefox') > -1 + @navigator = 'firefox' + else if navigator.userAgent.toLocaleLowerCase().indexOf('safari') > -1 + @navigator = 'safari' + + @screenShareAvailable = @navigator in ['chrome', 'firefox'] @media = video: true @@ -308,11 +315,30 @@ class WebRTCClass navigator.getUserMedia media, onSuccess, onError return - if @screenShareAvaliable isnt true + if @screenShareAvailable isnt true console.log 'Screen share is not avaliable' return getScreen = (audioStream) => + if document.cookie.indexOf("rocketchatscreenshare=chrome") is -1 and not window.rocketchatscreenshare? + swal + type: "warning" + title: TAPi18n.__ "Screen_Share" + text: TAPi18n.__ "You_need_install_an_extension_to_allow_screen_sharing" + html: true + showCancelButton: true + confirmButtonText: TAPi18n.__ "Install_Extension" + cancelButtonText: TAPi18n.__ "Cancel" + , (isConfirm) => + if isConfirm + if @navigator is 'chrome' + chrome.webstore.install undefined, undefined, -> + window.open('https://chrome.google.com/webstore/detail/rocketchat-screen-share/nocfbnnmjnndkbipkabodnheejiegccf') + else if @navigator is 'firefox' + window.open('https://addons.mozilla.org/en-GB/firefox/addon/rocketchat-screen-share/') + + return + getScreenSuccess = (stream) => if audioStream? stream.addTrack(audioStream.getAudioTracks()[0])