diff --git a/bigbluebutton-html5/imports/ui/components/user-list/component.jsx b/bigbluebutton-html5/imports/ui/components/user-list/component.jsx
index 4a44136b1d..85a5c36a38 100755
--- a/bigbluebutton-html5/imports/ui/components/user-list/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/user-list/component.jsx
@@ -6,6 +6,7 @@ import cx from 'classnames';
import { defineMessages, injectIntl } from 'react-intl';
import UserListItem from './user-list-item/component.jsx';
import ChatListItem from './chat-list-item/component.jsx';
+import { callServer } from '/imports/ui/services/api';
const propTypes = {
openChats: PropTypes.array.isRequired,
@@ -108,12 +109,44 @@ class UserList extends Component {
const {
users,
currentUser,
- userActions,
- compact,
isBreakoutRoom,
intl,
} = this.props;
+ const userActions = {
+ openChat: {
+ label: intl.formatMessage(intlMessages.ChatLabel),
+ handler: (router, user) => router.push(`/users/chat/${user.id}`),
+ icon: 'chat',
+ },
+ clearStatus: {
+ label: intl.formatMessage(intlMessages.ClearStatusLabel),
+ handler: user => callServer('setEmojiStatus', user.id, 'none'),
+ icon: 'clear_status',
+ },
+ setPresenter: {
+ label: intl.formatMessage(intlMessages.MakePresenterLabel),
+ handler: user => callServer('assignPresenter', user.id),
+ icon: 'presentation',
+ },
+ kick: {
+ label: intl.formatMessage(intlMessages.KickUserLabel),
+ handler: user => callServer('kickUser', user.id),
+ icon: 'circle_close',
+ },
+ mute: {
+ label: intl.formatMessage(intlMessages.MuteUserAudioLabel),
+ handler: user => callServer('muteUser', user.id),
+ icon: 'audio_off',
+ },
+ unmute: {
+ label: intl.formatMessage(intlMessages.UnmuteUserAudioLabel),
+ handler: user => callServer('unmuteUser', user.id),
+ icon: 'audio_on',
+ },
+ };
+
+
return (
{
@@ -163,6 +196,30 @@ const intlMessages = defineMessages({
id: 'app.userlist.participantsTitle',
description: 'Title for the Users list',
},
+ ChatLabel: {
+ id: 'app.userlist.menu.chat.label',
+ description: 'Save the changes and close the settings menu',
+ },
+ ClearStatusLabel: {
+ id: 'app.userlist.menu.clearStatus.label',
+ description: 'Clear the emoji status of this user',
+ },
+ MakePresenterLabel: {
+ id: 'app.userlist.menu.makePresenter.label',
+ description: 'Set this user to be the presenter in this meeting',
+ },
+ KickUserLabel: {
+ id: 'app.userlist.menu.kickUser.label',
+ description: 'Forcefully remove this user from the meeting',
+ },
+ MuteUserAudioLabel: {
+ id: 'app.userlist.menu.muteUserAudio.label',
+ description: 'Forcefully mute this user',
+ },
+ UnmuteUserAudioLabel: {
+ id: 'app.userlist.menu.unmuteUserAudio.label',
+ description: 'Forcefully unmute this user',
+ },
});
UserList.propTypes = propTypes;
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/service.js b/bigbluebutton-html5/imports/ui/components/user-list/service.js
index 0579be38c5..a9baadc2ce 100755
--- a/bigbluebutton-html5/imports/ui/components/user-list/service.js
+++ b/bigbluebutton-html5/imports/ui/components/user-list/service.js
@@ -5,7 +5,6 @@ import UnreadMessages from '/imports/ui/services/unread-messages';
import Storage from '/imports/ui/services/storage/session';
import { EMOJI_STATUSES } from '/imports/utils/statuses.js';
-import { callServer } from '/imports/ui/services/api';
import _ from 'lodash';
const CHAT_CONFIG = Meteor.settings.public.chat;
@@ -39,7 +38,7 @@ const mapUser = user => ({
const mapOpenChats = chat => {
let currentUserId = Auth.userID;
- return chat.message.from_userid !== Auth.userID
+ return chat.message.from_userid !== currentUserId
? chat.message.from_userid
: chat.message.to_userid;
};
@@ -238,42 +237,8 @@ getCurrentUser = () => {
return (currentUser) ? mapUser(currentUser.user) : null;
};
-const userActions = {
- openChat: {
- label: 'Chat',
- handler: (router, user) => router.push(`/users/chat/${user.id}`),
- icon: 'chat',
- },
- clearStatus: {
- label: 'Clear Status',
- handler: user => callServer('setEmojiStatus', user.id, 'none'),
- icon: 'clear_status',
- },
- setPresenter: {
- label: 'Make Presenter',
- handler: user => callServer('assignPresenter', user.id),
- icon: 'presentation',
- },
- kick: {
- label: 'Kick User',
- handler: user => callServer('kickUser', user.id),
- icon: 'circle_close',
- },
- mute: {
- label: 'Mute Audio',
- handler: user => callServer('muteUser', user.id),
- icon: 'audio_off',
- },
- unmute: {
- label: 'Unmute Audio',
- handler: user => callServer('unmuteUser', user.id),
- icon: 'audio_on',
- },
-};
-
export default {
getUsers,
getOpenChats,
getCurrentUser,
- userActions,
};
diff --git a/bigbluebutton-html5/private/locales/en.json b/bigbluebutton-html5/private/locales/en.json
index 63cae66022..f9e6e38b03 100755
--- a/bigbluebutton-html5/private/locales/en.json
+++ b/bigbluebutton-html5/private/locales/en.json
@@ -18,6 +18,12 @@
"app.userlist.menuTitleContext": "available options",
"app.userlist.chatlistitem.unreadSingular": "{count} New Message",
"app.userlist.chatlistitem.unreadPlural": "{count} New Messages",
+ "app.userlist.menu.chat.label": "Chat",
+ "app.userlist.menu.clearStatus.label": "Clear Status",
+ "app.userlist.menu.makePresenter.label": "Make Presenter",
+ "app.userlist.menu.kickUser.label": "Kick user",
+ "app.userlist.menu.muteUserAudio.label": "Mute user",
+ "app.userlist.menu.unmuteUserAudio.label": "Unmute user",
"app.chat.Label": "Chat",
"app.chat.emptyLogLabel": "Chat log empty",
"app.media.Label": "Media",