bigbluebutton-Github/bigbluebutton-html5/imports/ui/components/lock-viewers/notify/component.jsx
Pedro Beschorner Marin 810deb907b refactor(etherpad): access control et al.
Move all Etherpad's access control from Meteor to a separated [Node application](https://github.com/bigbluebutton/bbb-pads).
This new app uses [Etherpad's API](https://etherpad.org/doc/v1.8.4/#index_overview)
to create groups and manage session tokens for users to access them. Each group
represents one distinct pad at the html5 client.

- Removed locked users' access to pads: replaced readOnly pad's access with a new pad's content sharing routine
- Pad's access is now controlled by [Etherpad's API](https://etherpad.org/doc/v1.8.4/#index_overview)
- Closed captions edited content now reflects at it's live feedback
- Improved closed caption's dictation mode live feedback
- Moved all Etherpad's API control from Meteor to a separated [app](https://github.com/bigbluebutton/bbb-pads)
- Included access control both in akka-apps and bbb-pads
2022-01-21 16:56:01 -03:00

120 lines
3.7 KiB
JavaScript
Executable File

import { Component } from 'react';
import { defineMessages, injectIntl } from 'react-intl';
import { notify } from '/imports/ui/services/notification';
import _ from 'lodash';
const intlDisableMessages = defineMessages({
disableCam: {
id: 'app.userList.userOptions.disableCam',
description: 'label to disable cam notification',
},
disableMic: {
id: 'app.userList.userOptions.disableMic',
description: 'label to disable mic notification',
},
disablePrivateChat: {
id: 'app.userList.userOptions.disablePrivChat',
description: 'label to disable private chat notification',
},
disablePublicChat: {
id: 'app.userList.userOptions.disablePubChat',
description: 'label to disable private chat notification',
},
disableNotes: {
id: 'app.userList.userOptions.disableNotes',
description: 'label to disable shared notes notification',
},
hideUserList: {
id: 'app.userList.userOptions.hideUserList',
description: 'label to hide user list notification',
},
onlyModeratorWebcam: {
id: 'app.userList.userOptions.webcamsOnlyForModerator',
description: 'label to disable all webcams except for the moderators cam',
},
});
const intlEnableMessages = defineMessages({
disableCam: {
id: 'app.userList.userOptions.enableCam',
description: 'label to enable cam notification',
},
disableMic: {
id: 'app.userList.userOptions.enableMic',
description: 'label to enable mic notification',
},
disablePrivateChat: {
id: 'app.userList.userOptions.enablePrivChat',
description: 'label to enable private chat notification',
},
disablePublicChat: {
id: 'app.userList.userOptions.enablePubChat',
description: 'label to enable private chat notification',
},
disableNotes: {
id: 'app.userList.userOptions.enableNotes',
description: 'label to enable shared notes notification',
},
hideUserList: {
id: 'app.userList.userOptions.showUserList',
description: 'label to show user list notification',
},
onlyModeratorWebcam: {
id: 'app.userList.userOptions.enableOnlyModeratorWebcam',
description: 'label to enable all webcams except for the moderators cam',
},
});
class LockViewersNotifyComponent extends Component {
componentDidUpdate(prevProps) {
const {
lockSettings,
intl,
webcamsOnlyForModerator,
} = this.props;
const {
lockSettings: prevLockSettings,
webcamsOnlyForModerator: prevWebcamsOnlyForModerator,
} = prevProps;
function notifyLocks(arrLocks, intlMessages) {
arrLocks.forEach((key) => {
notify(intl.formatMessage(intlMessages[key]), 'info', 'lock');
});
}
if (!_.isEqual(lockSettings, prevLockSettings)) {
const rejectedKeys = ['setBy', 'lockedLayout'];
const disabledSettings = Object.keys(lockSettings)
.filter(key => prevLockSettings[key] !== lockSettings[key]
&& lockSettings[key]
&& !rejectedKeys.includes(key));
const enableSettings = Object.keys(lockSettings)
.filter(key => prevLockSettings[key] !== lockSettings[key]
&& !lockSettings[key]
&& !rejectedKeys.includes(key));
if (disabledSettings.length > 0) {
notifyLocks(disabledSettings, intlDisableMessages);
}
if (enableSettings.length > 0) {
notifyLocks(enableSettings, intlEnableMessages);
}
}
if (webcamsOnlyForModerator && !prevWebcamsOnlyForModerator) {
notify(intl.formatMessage(intlDisableMessages.onlyModeratorWebcam), 'info', 'lock');
}
if (!webcamsOnlyForModerator && prevWebcamsOnlyForModerator) {
notify(intl.formatMessage(intlEnableMessages.onlyModeratorWebcam), 'info', 'lock');
}
}
render() {
return null;
}
}
export default injectIntl(LockViewersNotifyComponent);