bigbluebutton-Github/bigbluebutton-html5/imports/ui/components/status-notifier/container.jsx

49 lines
1.6 KiB
React
Raw Normal View History

import React, { useContext } from 'react';
2020-06-30 10:43:20 +08:00
import { withTracker } from 'meteor/react-meteor-data';
import Auth from '/imports/ui/services/auth';
import Users from '/imports/api/users';
2020-06-30 10:43:20 +08:00
import Settings from '/imports/ui/services/settings';
import { UsersContext } from '/imports/ui/components/components-data/users-context/context';
2020-06-30 10:43:20 +08:00
import { makeCall } from '/imports/ui/services/api';
import StatusNotifier from './component';
const ROLE_VIEWER = Meteor.settings.public.user.role_viewer;
const StatusNotifierContainer = (props) => {
const usingUsersContext = useContext(UsersContext);
const { users } = usingUsersContext;
2021-04-15 20:12:21 +08:00
const currentUser = users[Auth.meetingID][Auth.userID];
const isViewer = currentUser.role === ROLE_VIEWER;
const isPresenter = currentUser.presenter;
return (
<StatusNotifier {...{
...props,
isViewer,
isPresenter,
}}
/>
);
};
2020-06-30 10:43:20 +08:00
export default withTracker((props) => {
const AppSettings = Settings.application;
const { status } = props;
const emojiUsers = Users.find({ meetingId: Auth.meetingID, emoji: status }, {
fields: {
emojiTime: 1, emoji: 1, userId: 1, name: 1, color: 1, role: 1, avatar: 1,
2020-06-30 10:43:20 +08:00
},
2021-06-11 00:46:27 +08:00
sort: { emojiTime: 1 },
2020-06-30 10:43:20 +08:00
})
.fetch()
2021-06-11 00:46:27 +08:00
.filter((u) => u.emoji === status && u.userId !== Auth.userID);
const clearUserStatus = (userId) => makeCall('setUserReaction', 'none', userId);
2020-06-30 10:43:20 +08:00
return {
clearUserStatus,
emojiUsers,
status,
raiseHandAudioAlert: AppSettings.raiseHandAudioAlerts,
raiseHandPushAlert: AppSettings.raiseHandPushAlerts,
};
})(StatusNotifierContainer);