From 9fa1986611300f6a1941b8b9b3800097db7c9498 Mon Sep 17 00:00:00 2001
From: Tainan Felipe <tainanfelipe214@gmail.com>
Date: Fri, 19 Jun 2020 17:07:11 -0300
Subject: [PATCH] Add implicit toggle for toggle voice call

---
 .../imports/api/voice-users/server/methods/muteToggle.js     | 5 +++--
 .../imports/ui/services/audio-manager/index.js               | 4 ++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/bigbluebutton-html5/imports/api/voice-users/server/methods/muteToggle.js b/bigbluebutton-html5/imports/api/voice-users/server/methods/muteToggle.js
index fdc3c23f4d..b28ee5935f 100644
--- a/bigbluebutton-html5/imports/api/voice-users/server/methods/muteToggle.js
+++ b/bigbluebutton-html5/imports/api/voice-users/server/methods/muteToggle.js
@@ -3,8 +3,9 @@ import { extractCredentials } from '/imports/api/common/server/helpers';
 import RedisPubSub from '/imports/startup/server/redis';
 import Users from '/imports/api/users';
 import VoiceUsers from '/imports/api/voice-users';
+import _ from 'lodash';
 
-export default function muteToggle(uId) {
+export default function muteToggle(uId, implicitToggle) {
   const REDIS_CONFIG = Meteor.settings.private.redis;
   const CHANNEL = REDIS_CONFIG.channels.toAkkaApps;
   const EVENT_NAME = 'MuteUserCmdMsg';
@@ -30,7 +31,7 @@ export default function muteToggle(uId) {
   const payload = {
     userId: userToMute,
     mutedBy: requesterUserId,
-    mute: !muted,
+    mute: _.isNil(implicitToggle)? !muted : implicitToggle,
   };
 
   RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload);
diff --git a/bigbluebutton-html5/imports/ui/services/audio-manager/index.js b/bigbluebutton-html5/imports/ui/services/audio-manager/index.js
index 4146c25cc9..f9aab8a276 100755
--- a/bigbluebutton-html5/imports/ui/services/audio-manager/index.js
+++ b/bigbluebutton-html5/imports/ui/services/audio-manager/index.js
@@ -284,7 +284,7 @@ class AudioManager {
     this.isConnected = true;
 
     if (this.wasMuted) {
-      makeCall('toggleVoice');
+      makeCall('toggleVoice', true);
       this.wasMuted = false;
     }
     // listen to the VoiceUsers changes and update the flag
@@ -293,7 +293,7 @@ class AudioManager {
       this.muteHandle = query.observeChanges({
         changed: (id, fields) => {
           if (fields.muted !== undefined && fields.muted !== this.isMuted) {
-            this.isMuted = fields.muted;
+            this.isMuted = true;
             const muteState = this.isMuted ? 'selfMuted' : 'selfUnmuted';
             window.parent.postMessage({ response: muteState }, '*');
           }
-- 
GitLab