import React from 'react'; import cn from 'classnames'; import { connect } from 'react-redux'; import LiveTag from './LiveTag'; import AssistSessionsTabs from './AssistSessionsTabs'; import { CONSOLE, toggleBottomBlock, } from 'Duck/components/player'; import { PlayerContext, ILivePlayerContext } from 'App/components/Session/playerContext'; import { observer } from 'mobx-react-lite'; import { fetchSessions } from 'Duck/liveSearch'; import AssistDuration from './AssistDuration'; import Timeline from './Timeline'; import ControlButton from 'Components/Session_/Player/Controls/ControlButton'; import { SKIP_INTERVALS } from 'Components/Session_/Player/Controls/Controls' import styles from 'Components/Session_/Player/Controls/controls.module.css'; function Controls(props: any) { // @ts-ignore ?? TODO const { player, store } = React.useContext(PlayerContext); const { jumpToLive } = player; const { livePlay, logMarkedCountNow: logRedCount, exceptionsList, } = store.get(); const showExceptions = exceptionsList.length > 0; const { bottomBlock, toggleBottomBlock, closedLive, skipInterval, session, fetchSessions: fetchAssistSessions, totalAssistSessions, } = props; const onKeyDown = (e: any) => { if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) { return; } if (e.key === 'ArrowRight') { forthTenSeconds(); } if (e.key === 'ArrowLeft') { backTenSeconds(); } }; React.useEffect(() => { document.addEventListener('keydown', onKeyDown.bind(this)); if (totalAssistSessions === 0) { fetchAssistSessions(); } return () => { document.removeEventListener('keydown', onKeyDown.bind(this)); }; }, []); const forthTenSeconds = () => { // @ts-ignore player.jumpInterval(SKIP_INTERVALS[skipInterval]); }; const backTenSeconds = () => { // @ts-ignore player.jumpInterval(-SKIP_INTERVALS[skipInterval]); }; const toggleBottomTools = (blockName: number) => { toggleBottomBlock(blockName); }; return (
{!closedLive && (
(livePlay ? null : jumpToLive())} />
)}
{totalAssistSessions > 1 ? (
) : null}
toggleBottomTools(CONSOLE)} active={bottomBlock === CONSOLE} label="CONSOLE" noIcon labelClassName="!text-base font-semibold" hasErrors={logRedCount > 0 || showExceptions} containerClassName="mx-2" />
); } const ControlPlayer = observer(Controls); export default connect( (state: any) => { return { session: state.getIn(['sessions', 'current']), totalAssistSessions: state.getIn(['liveSearch', 'total']), closedLive: !!state.getIn(['sessions', 'errors']) || !state.getIn(['sessions', 'current']).live, }; }, { fetchSessions, toggleBottomBlock } )(ControlPlayer);