import React from 'react'; import cn from 'classnames'; import { Icon } from 'UI'; import { useStore } from 'App/mstore'; import { observer } from 'mobx-react-lite'; import { useHistory } from 'react-router-dom'; import { multiview, liveSession, withSiteId } from 'App/routes'; import { connect } from 'react-redux'; interface ITab { onClick?: () => void; classNames?: string; children: React.ReactNode; style?: Record; } const Tab = (props: ITab) => (
{props.children}
); export const InactiveTab = React.memo((props: Omit) => ( )); const ActiveTab = React.memo((props: Omit) => ( )); const CurrentTab = React.memo(() => ( PLAYING )); function AssistTabs({ session, siteId }: { session: Record; siteId: string }) { const history = useHistory(); const { assistMultiviewStore } = useStore(); const placeholder = new Array(4 - assistMultiviewStore.sessions.length).fill(0); React.useEffect(() => { if (assistMultiviewStore.sessions.length === 0) { assistMultiviewStore.setDefault(session); } }, []); const openGrid = () => { const sessionIdQuery = encodeURIComponent(assistMultiviewStore.sessions.map((s) => s.sessionId).join(',')); return history.push(withSiteId(multiview(sessionIdQuery), siteId)); }; const openLiveSession = (sessionId: string) => { assistMultiviewStore.setActiveSession(sessionId); history.push(withSiteId(liveSession(sessionId), siteId)); }; return (
{assistMultiviewStore.sortedSessions.map((session: { key: number, sessionId: string }) => ( {assistMultiviewStore.isActive(session.sessionId) ? ( ) : ( openLiveSession(session.sessionId)} /> )} ))} {placeholder.map((_, i) => ( ))}
); } export default connect((state: any) => ({ siteId: state.getIn(['site', 'siteId']) }))( observer(AssistTabs) );