import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import { defineMessages, injectIntl } from 'react-intl'; import deviceInfo from '/imports/utils/deviceInfo'; 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 Styled from './styles'; import Button from '/imports/ui/components/common/button/component'; import AudioModalContainer from '../audio-modal/container'; 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, handleToggleMuteMicrophone: 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.state = { isAudioModalOpen: false, }; this.renderButtonsAndStreamSelector = this.renderButtonsAndStreamSelector.bind(this); this.renderJoinLeaveButton = this.renderJoinLeaveButton.bind(this); this.setAudioModalIsOpen = this.setAudioModalIsOpen.bind(this); } renderJoinButton() { const { disable, intl, shortcuts, joinListenOnly, isConnected } = this.props; return (