import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import cx from 'classnames'; import { defineMessages, injectIntl } from 'react-intl'; import deviceInfo from '/imports/utils/deviceInfo'; import Button from '/imports/ui/components/button/component'; import getFromUserSettings from '/imports/ui/services/users-settings'; import withShortcutHelper from '/imports/ui/components/shortcut-help/service'; import InputStreamLiveSelectorContainer from './input-stream-live-selector/container'; import MutedAlert from '/imports/ui/components/muted-alert/component'; import { styles } from './styles'; const intlMessages = defineMessages({ joinAudio: { id: 'app.audio.joinAudio', description: 'Join audio button label', }, leaveAudio: { id: 'app.audio.leaveAudio', description: 'Leave audio button label', }, muteAudio: { id: 'app.actionsBar.muteLabel', description: 'Mute audio button label', }, unmuteAudio: { id: 'app.actionsBar.unmuteLabel', description: 'Unmute audio button label', }, }); const propTypes = { shortcuts: PropTypes.objectOf(PropTypes.string).isRequired, processToggleMuteFromOutside: PropTypes.func.isRequired, handleToggleMuteMicrophone: PropTypes.func.isRequired, handleJoinAudio: PropTypes.func.isRequired, handleLeaveAudio: PropTypes.func.isRequired, disable: PropTypes.bool.isRequired, muted: PropTypes.bool.isRequired, showMute: PropTypes.bool.isRequired, inAudio: PropTypes.bool.isRequired, listenOnly: PropTypes.bool.isRequired, intl: PropTypes.shape({ formatMessage: PropTypes.func.isRequired, }).isRequired, talking: PropTypes.bool.isRequired, }; class AudioControls extends PureComponent { constructor(props) { super(props); this.renderLeaveButtonWithoutLiveStreamSelector = this .renderLeaveButtonWithoutLiveStreamSelector.bind(this); this.renderJoinLeaveButton = this.renderJoinLeaveButton.bind(this); } componentDidMount() { const { processToggleMuteFromOutside } = this.props; if (Meteor.settings.public.allowOutsideCommands.toggleSelfVoice || getFromUserSettings('bbb_outside_toggle_self_voice', false)) { window.addEventListener('message', processToggleMuteFromOutside); } } renderJoinButton() { const { handleJoinAudio, disable, intl, shortcuts, } = this.props; return (