import React, { PureComponent } from 'react'; import cx from 'classnames'; import { styles } from './styles.scss'; import DesktopShare from './desktop-share/component'; import ActionsDropdown from './actions-dropdown/container'; import AudioControlsContainer from '../audio/audio-controls/container'; import JoinVideoOptionsContainer from '../video-provider/video-button/container'; import CaptionsButtonContainer from '/imports/ui/components/actions-bar/captions/container'; import PresentationOptionsContainer from './presentation-options/component'; import Button from '/imports/ui/components/button/component'; import Storage from '/imports/ui/services/storage/session'; import { ACTIONSBAR_HEIGHT } from '/imports/ui/components/layout/layout-manager'; import { withLayoutConsumer } from '/imports/ui/components/layout/context'; class ActionsBar extends PureComponent { constructor(props) { super(props); this.autoArrangeToggle = this.autoArrangeToggle.bind(this); } componentDidUpdate(prevProps) { const { layoutContextState } = this.props; const { layoutContextState: prevLayoutContextState } = prevProps; const { autoArrangeLayout } = layoutContextState; const { autoArrangeLayout: prevAutoArrangeLayout } = prevLayoutContextState; if (autoArrangeLayout !== prevAutoArrangeLayout) this.forceUpdate(); } autoArrangeToggle() { const { layoutContextDispatch } = this.props; const autoArrangeLayout = Storage.getItem('autoArrangeLayout'); layoutContextDispatch( { type: 'setAutoArrangeLayout', value: !autoArrangeLayout, }, ); window.dispatchEvent(new Event('autoArrangeChanged')); } render() { const { amIPresenter, handleShareScreen, handleUnshareScreen, isVideoBroadcasting, amIModerator, screenSharingCheck, enableVideo, isLayoutSwapped, toggleSwapLayout, handleTakePresenter, intl, currentSlidHasContent, parseCurrentSlideContent, isSharingVideo, screenShareEndAlert, stopExternalVideoShare, screenshareDataSavingSetting, isCaptionsAvailable, isMeteorConnected, isPollingEnabled, isThereCurrentPresentation, allowExternalVideo, } = this.props; const actionBarClasses = {}; const autoArrangeLayout = Storage.getItem('autoArrangeLayout'); actionBarClasses[styles.centerWithActions] = amIPresenter; actionBarClasses[styles.center] = true; actionBarClasses[styles.mobileLayoutSwapped] = isLayoutSwapped && amIPresenter; return (