import { connect } from 'react-redux'; import { IReduxState } from '../../../app/types'; import { isAudioTranslationAvailable } from '../../../audio-translation/functions'; import { translate } from '../../../base/i18n/functions'; import { IconTranslate } from '../../../base/icons/svg'; import AbstractButton, { IProps as AbstractButtonProps } from '../../../base/toolbox/components/AbstractButton'; import { navigate } from '../../../mobile/navigation/components/conference/ConferenceNavigationContainerRef'; import { screen } from '../../../mobile/navigation/routes'; interface IProps extends AbstractButtonProps { /** * The id of the participant the language selector targets. */ participantID: string; } /** * Remote-menu button opening the translation language selector for that participant. */ class TranslateParticipantButton extends AbstractButton { override accessibilityLabel = 'toolbar.accessibilityLabel.audioTranslation'; override icon = IconTranslate; override label = 'toolbar.audioTranslation'; /** * Opens the language selector screen scoped to the participant. * * @override * @returns {void} */ override _handleClick() { navigate(screen.conference.audioTranslation, { participantId: this.props.participantID }); } } /** * Maps (parts of) the redux state to the button's props. * * @param {IReduxState} state - The redux state. * @returns {Object} */ function _mapStateToProps(state: IReduxState) { return { visible: isAudioTranslationAvailable(state) }; } export default translate(connect(_mapStateToProps)(TranslateParticipantButton));