diff --git a/bigbluebutton-html5/imports/ui/components/modal/random-user/container.jsx b/bigbluebutton-html5/imports/ui/components/modal/random-user/container.jsx index 546591ac0e6089f0ec96b0cb28957b61cb40213e..5f434cea1e05aa3de5ab91b02afd879c0f6d82eb 100644 --- a/bigbluebutton-html5/imports/ui/components/modal/random-user/container.jsx +++ b/bigbluebutton-html5/imports/ui/components/modal/random-user/container.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useContext } from 'react'; import { withTracker } from 'meteor/react-meteor-data'; import Meetings from '/imports/api/meetings'; import Users from '/imports/api/users'; @@ -6,11 +6,33 @@ import Auth from '/imports/ui/services/auth'; import { withModalMounter } from '/imports/ui/components/modal/service'; import { makeCall } from '/imports/ui/services/api'; import RandomUserSelect from './component'; +import { UsersContext } from '/imports/ui/components/components-data/users-context/context'; const SELECT_RANDOM_USER_ENABLED = Meteor.settings.public.selectRandomUser.enabled; -const RandomUserSelectContainer = props => <RandomUserSelect {...props} />; +const RandomUserSelectContainer = (props) => { + const usingUsersContext = useContext(UsersContext); + const { users } = usingUsersContext; + const { randomlySelectedUser } = props; + let mappedRandomlySelectedUsers = []; + + if (randomlySelectedUser) { + mappedRandomlySelectedUsers = randomlySelectedUser.map((ui) => { + const selectedUser = users[Auth.meetingID][ui[0]]; + return [{ + userId: selectedUser.userId, + avatar: selectedUser.avatar, + color: selectedUser.color, + name: selectedUser.name, + }, ui[1]]; + }); + } + + const currentUser = { userId: Auth.userID, presenter: users[Auth.meetingID][Auth.userID].presenter }; + + return <RandomUserSelect {...props} mappedRandomlySelectedUsers={mappedRandomlySelectedUsers} currentUser={currentUser} />; +}; export default withModalMounter(withTracker(({ mountModal }) => { const viewerPool = Users.find({ meetingId: Auth.meetingID, @@ -28,29 +50,6 @@ export default withModalMounter(withTracker(({ mountModal }) => { }, }); - let mappedRandomlySelectedUsers = []; - if (meeting.randomlySelectedUser) { - mappedRandomlySelectedUsers = meeting.randomlySelectedUser.map(function(ui) { - const selectedUser = Users.findOne({ - meetingId: Auth.meetingID, - userId: ui[0], - }, { - fields: { - userId: 1, - avatar: 1, - color: 1, - name: 1, - }, - }); - return [selectedUser,ui[1]]; - }); - } - - const currentUser = Users.findOne( - { userId: Auth.userID }, - { fields: { userId: 1, presenter: 1 } }, - ); - const randomUserReq = () => (SELECT_RANDOM_USER_ENABLED ? makeCall('setRandomUser') : null); const clearRandomlySelectedUser = () => (SELECT_RANDOM_USER_ENABLED ? makeCall('clearRandomlySelectedUser') : null); @@ -59,8 +58,7 @@ export default withModalMounter(withTracker(({ mountModal }) => { closeModal: () => mountModal(null), numAvailableViewers: viewerPool.length, randomUserReq, - mappedRandomlySelectedUsers, - currentUser, clearRandomlySelectedUser, + randomlySelectedUser: meeting.randomlySelectedUser, }); })(RandomUserSelectContainer));