From 4dbe681a462996ba1799a09b328b50645ef1c137 Mon Sep 17 00:00:00 2001
From: Anton Georgiev <anto.georgiev@gmail.com>
Date: Wed, 11 Jul 2018 12:46:44 +0000
Subject: [PATCH] disable HTML5 waiting screen for guest approve

---
 .../imports/api/users/server/eventHandlers.js |  3 +-
 .../users/server/handlers/guestApproved.js    | 29 ++++++++++++-------
 .../imports/ui/components/app/container.jsx   |  7 +++--
 3 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/bigbluebutton-html5/imports/api/users/server/eventHandlers.js b/bigbluebutton-html5/imports/api/users/server/eventHandlers.js
index 495c58eabd..5d9f55fb0e 100644
--- a/bigbluebutton-html5/imports/api/users/server/eventHandlers.js
+++ b/bigbluebutton-html5/imports/api/users/server/eventHandlers.js
@@ -17,6 +17,7 @@ RedisPubSub.on('ValidateAuthTokenRespMsg', handleValidateAuthToken);
 RedisPubSub.on('UserEmojiChangedEvtMsg', handleEmojiStatus);
 RedisPubSub.on('SyncGetUsersMeetingRespMsg', handleGetUsers);
 RedisPubSub.on('GuestsWaitingForApprovalEvtMsg', handleGuestsWaitingForApproval);
-RedisPubSub.on('GuestApprovedEvtMsg', handleGuestApproved);
+RedisPubSub.on('GuestsWaitingApprovedEvtMsg', handleGuestApproved);
 RedisPubSub.on('UserEjectedFromMeetingEvtMsg', handleUserEjected);
 RedisPubSub.on('UserRoleChangedEvtMsg', handleChangeRole);
+
diff --git a/bigbluebutton-html5/imports/api/users/server/handlers/guestApproved.js b/bigbluebutton-html5/imports/api/users/server/handlers/guestApproved.js
index 7187c1bf17..6e62ab0342 100644
--- a/bigbluebutton-html5/imports/api/users/server/handlers/guestApproved.js
+++ b/bigbluebutton-html5/imports/api/users/server/handlers/guestApproved.js
@@ -5,23 +5,30 @@ import userJoin from '../methods/userJoin';
 
 export default function handleGuestsWaitingForApproval({ header, body }, meetingId) {
   const { userId } = header;
-  const { approved, approvedBy } = body;
+  const { guests, approvedBy } = body;
 
   check(userId, String);
   check(meetingId, String);
-  check(approved, Boolean);
   check(approvedBy, String);
 
-  const selector = {
-    meetingId,
-    userId,
-  };
+  return guests.forEach(item => {
+    const { guest, approved } = item;
 
-  const User = Users.findOne(selector);
+    check(approved, Boolean);
+    check(guest, String);
 
-  if (User && approved) {
-    userJoin(meetingId, userId, User.authToken);
-  }
+    const selector = {
+      meetingId,
+      userId: guest,
+      clientType: "HTML5",
+    };
 
-  return setApprovedStatus(meetingId, userId, approved, approvedBy);
+    const User = Users.findOne(selector);
+
+    if (User && approved) {
+      userJoin(meetingId, guest, User.authToken);
+    }
+
+    setApprovedStatus(meetingId, guest, approved, approvedBy);
+  })
 }
diff --git a/bigbluebutton-html5/imports/ui/components/app/container.jsx b/bigbluebutton-html5/imports/ui/components/app/container.jsx
index 8548d1969a..0e2c531473 100644
--- a/bigbluebutton-html5/imports/ui/components/app/container.jsx
+++ b/bigbluebutton-html5/imports/ui/components/app/container.jsx
@@ -69,9 +69,10 @@ export default withRouter(injectIntl(withModalMounter(withTracker(({ router, int
   const currentUser = Users.findOne({ userId: Auth.userID });
   const isMeetingBreakout = meetingIsBreakout();
 
-  if (!currentUser.approved) {
-    baseControls.updateLoadingState(intl.formatMessage(intlMessages.waitingApprovalMessage));
-  }
+  // TODO re-enable to show loading screen while waiting for guest approval
+  // if (!currentUser.approved) {
+  //   baseControls.updateLoadingState(intl.formatMessage(intlMessages.waitingApprovalMessage));
+  // }
 
   // Check if user is removed out of the session
   Users.find({ userId: Auth.userID }).observeChanges({
-- 
GitLab