import React from 'react'; import { View } from 'react-native'; import { connect } from 'react-redux'; import { MEDIA_TYPE, toggleCameraFacingMode } from '../../base/media'; import { Container } from '../../base/react'; import { ColorPalette } from '../../base/styles'; import { AbstractToolbar, mapStateToProps } from './AbstractToolbar'; import { styles } from './styles'; import ToolbarButton from './ToolbarButton'; /** * Implements the conference toolbar on React Native. * * @extends AbstractToolbar */ class Toolbar extends AbstractToolbar { /** * Initializes a new Toolbar instance. * * @param {Object} props - The read-only React Component props with which * the new instance is to be initialized. */ constructor(props) { super(props); // Bind event handlers so they are only bound once for every instance. this._toggleCameraFacingMode = this._toggleCameraFacingMode.bind(this); } /** * Implements React's {@link Component#render()}. * * @inheritdoc * @returns {ReactElement} */ render() { const audioButtonStyles = this._getMuteButtonStyles(MEDIA_TYPE.AUDIO); const videoButtonStyles = this._getMuteButtonStyles(MEDIA_TYPE.VIDEO); const underlayColor = ColorPalette.buttonUnderlay; // TODO Use correct Jitsi icon for camera switch button when available. /* eslint-disable react/jsx-handler-names */ return ( ); /* eslint-enable react/jsx-handler-names */ } /** * Switches between the front/user-facing and rear/environment-facing * cameras. * * @private * @returns {void} */ _toggleCameraFacingMode() { this.props.dispatch(toggleCameraFacingMode()); } } /** * Additional properties for various icons, which are now platform-dependent. * This is done to have common logic of generating styles for web and native. * TODO As soon as we have common font sets for web and native, this will no * longer be required. */ Object.assign(Toolbar.prototype, { audioIcon: 'microphone', audioMutedIcon: 'mic-disabled', videoIcon: 'webCam', videoMutedIcon: 'camera-disabled' }); /** * Toolbar component's property types. * * @static */ Toolbar.propTypes = AbstractToolbar.propTypes; export default connect(mapStateToProps)(Toolbar);