From b582b1ca78dfff0703a6d1b4413eb3ff9a48454b Mon Sep 17 00:00:00 2001
From: Mario Jr <mariogasparoni@gmail.com>
Date: Fri, 29 Jan 2021 19:05:51 -0300
Subject: [PATCH] Correctly return MediaStream object when calling
 audio-manager's inputStream

This was missed in recent audio/sip.js changes.
MediaStream is now returned from SIP.js
Related to #10733
---
 .../imports/api/audio/client/bridge/sip.js            | 11 +++++++++++
 .../imports/ui/services/audio-manager/index.js        |  3 +--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js b/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js
index 3b223e395a..98a8dc78f4 100755
--- a/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js
+++ b/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js
@@ -87,6 +87,13 @@ class SIPSession {
     this._currentSessionState = null;
   }
 
+  get inputStream() {
+    if (this.currentSession && this.currentSession.sessionDescriptionHandler) {
+      return this.currentSession.sessionDescriptionHandler.localMediaStream;
+    }
+    return null;
+  }
+
   joinAudio({ isListenOnly, extension, inputDeviceId }, managerCallback) {
     return new Promise((resolve, reject) => {
       const callExtension = extension ? `${extension}${this.userData.voiceBridge}` : this.userData.voiceBridge;
@@ -1064,6 +1071,10 @@ export default class SIPBridge extends BaseAudioBridge {
     return this.media.inputDevice ? this.media.inputDevice.inputDeviceId : null;
   }
 
+  get inputStream() {
+    return this.activeSession ? this.activeSession.inputStream : null;
+  }
+
   joinAudio({ isListenOnly, extension }, managerCallback) {
     const hasFallbackDomain = typeof IPV4_FALLBACK_DOMAIN === 'string' && IPV4_FALLBACK_DOMAIN !== '';
 
diff --git a/bigbluebutton-html5/imports/ui/services/audio-manager/index.js b/bigbluebutton-html5/imports/ui/services/audio-manager/index.js
index d7c1a2f425..8ff349355f 100755
--- a/bigbluebutton-html5/imports/ui/services/audio-manager/index.js
+++ b/bigbluebutton-html5/imports/ui/services/audio-manager/index.js
@@ -354,7 +354,6 @@ class AudioManager {
     this.failedMediaElements = [];
 
     if (this.inputStream) {
-      window.defaultInputStream.forEach(track => track.stop());
       this.inputStream.getTracks().forEach(track => track.stop());
       this.inputDevice = { id: 'default' };
     }
@@ -510,7 +509,7 @@ class AudioManager {
 
   get inputStream() {
     this._inputDevice.tracker.depend();
-    return this._inputDevice.value.stream;
+    return (this.bridge ? this.bridge.inputStream : null);
   }
 
   get inputDevice() {
-- 
GitLab