From c80827ee201262fa733e59068f90becc9d251b3b Mon Sep 17 00:00:00 2001 From: Anton Georgiev Date: Mon, 24 Apr 2017 17:17:53 -0400 Subject: [PATCH] fix issue with listenOnly not hanging up --- .../imports/api/audio/client/bridge/sip.js | 24 ++++++++----------- .../imports/api/audio/client/bridge/verto.js | 2 +- .../imports/api/audio/client/manager/index.js | 6 ++--- .../imports/ui/components/audio/service.js | 2 -- 4 files changed, 14 insertions(+), 20 deletions(-) diff --git a/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js b/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js index 2cce3322ab..86260d0784 100644 --- a/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js +++ b/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js @@ -24,30 +24,26 @@ export default class SIPBridge extends BaseAudioBridge { // Periodically check the status of the WebRTC call, when a call has been established attempt to // hangup, retry if a call is in progress, send the leave voice conference message to BBB - exitAudio(afterExitCall = () => {}) { - // To be called when the hangup is initiated + exitAudio(isListenOnly, afterExitCall = () => {}) { + // To be called when the hangup is confirmed const hangupCallback = function () { - console.log('Exiting Voice Conference'); + console.log('Exited Voice Conference, listenOnly=' + isListenOnly); + + // notify BBB-apps we are leaving the call if we are in listen only mode + if (isListenOnly) { + callServer('listenOnlyToggle', false); + } }; - // Checks periodically until a call is established so we can successfully end the call - // clean state + // Checks periodically until a call is established so we can successfully end the call clean state triedHangup = false; // function to initiate call const checkToHangupCall = ((context, afterExitCall = () => {}) => { - // if an attempt to hang up the call is made when the current session is not yet finished, - // the request has no effect - // keep track in the session if we haven't tried a hangup + // the request has no effect keep track in the session if we haven't tried a hangup if (window.getCallStatus() != null && !triedHangup) { console.log('Attempting to hangup on WebRTC call'); - - // notify BBB-apps we are leaving the call call if we are listen only - if (this.userData.listenOnly) { - callServer('listenOnlyToggle', false); - } - window.webrtc_hangup(hangupCallback); // we have hung up, prevent retries diff --git a/bigbluebutton-html5/imports/api/audio/client/bridge/verto.js b/bigbluebutton-html5/imports/api/audio/client/bridge/verto.js index 2b1936062d..63e299b703 100644 --- a/bigbluebutton-html5/imports/api/audio/client/bridge/verto.js +++ b/bigbluebutton-html5/imports/api/audio/client/bridge/verto.js @@ -13,7 +13,7 @@ export default class VertoBridge extends BaseAudioBridge { this.vertoUsername = 'FreeSWITCH User - ' + encodeURIComponent(username); } - exitAudio() { + exitAudio(listenOnly) { window.vertoExitAudio(); } diff --git a/bigbluebutton-html5/imports/api/audio/client/manager/index.js b/bigbluebutton-html5/imports/api/audio/client/manager/index.js index fb83859cff..fa9b020e32 100644 --- a/bigbluebutton-html5/imports/api/audio/client/manager/index.js +++ b/bigbluebutton-html5/imports/api/audio/client/manager/index.js @@ -1,4 +1,3 @@ -import { callServer } from '/imports/ui/services/api'; import BaseAudioBridge from '../bridge/base'; import VertoBridge from '../bridge/verto'; import SIPBridge from '../bridge/sip'; @@ -13,15 +12,16 @@ export default class AudioManager { } this.bridge = audioBridge; + this.isListenOnly = false; } exitAudio () { - this.bridge.exitAudio(); + this.bridge.exitAudio(this.isListenOnly); } joinAudio(listenOnly) { if (listenOnly) { - callServer('listenOnlyToggle', true); + this.isListenOnly = true; this.bridge.joinListenOnly(); } else { this.bridge.joinMicrophone(); diff --git a/bigbluebutton-html5/imports/ui/components/audio/service.js b/bigbluebutton-html5/imports/ui/components/audio/service.js index 7ea0cf0ac8..971069b92d 100644 --- a/bigbluebutton-html5/imports/ui/components/audio/service.js +++ b/bigbluebutton-html5/imports/ui/components/audio/service.js @@ -17,7 +17,6 @@ const init = () => { const userId = Auth.userID; const User = Users.findOne({ userId }); const username = User.user.name; - const listenOnly = User.user.listenOnly; const Meeting = Meetings.findOne(); //TODO test this with Breakouts const turns = Meeting.turns; @@ -27,7 +26,6 @@ const init = () => { const userData = { userId, username, - listenOnly, turns, stuns, voiceBridge,