import React from 'react'; import { useStore } from 'App/mstore'; import { BackLink } from 'UI'; import { observer } from 'mobx-react-lite'; import { useHistory, useParams } from 'react-router-dom'; import { liveSession, assist, withSiteId, multiview } from 'App/routes'; import AssistSessionsModal from 'App/components/Session_/Player/Controls/AssistSessionsModal'; import { useModal } from 'App/components/Modal'; import LivePlayer from 'App/components/Session/LivePlayer'; import EmptyTile from './EmptyTile'; import SessionTileFooter from './SessionTileFooter'; function Multiview({ assistCredentials }: { assistCredentials: any; list: Record[]; }) { const { showModal, hideModal } = useModal(); const { assistMultiviewStore, projectsStore, searchStoreLive, sessionStore } = useStore(); const siteId = projectsStore.siteId!; const history = useHistory(); // @ts-ignore const { sessionsquery } = useParams(); const total = sessionStore.totalLiveSessions; const onSessionsChange = (sessions: Array | undefined>) => { const sessionIdQuery = encodeURIComponent(sessions.map((s) => s && s.sessionId).join(',')); return history.replace(withSiteId(multiview(sessionIdQuery), siteId)); }; React.useEffect(() => { assistMultiviewStore.setOnChange(onSessionsChange); if (sessionsquery) { const sessionIds = decodeURIComponent(sessionsquery).split(','); // preset assistMultiviewStore.presetSessions(sessionIds).then((data) => { sessionStore.customSetSessions(data); }); } else { searchStoreLive.fetchSessions(); } }, []); const openLiveSession = (e: React.MouseEvent, sessionId: string) => { e.stopPropagation(); assistMultiviewStore.setActiveSession(sessionId); history.push(withSiteId(liveSession(sessionId) + '?multi=true', siteId)); }; const returnToList = () => { assistMultiviewStore.reset(); history.push(withSiteId(assist(), siteId)); }; const openListModal = () => { showModal(, { right: true, width: 700 }); }; const replaceSession = (e: React.MouseEvent, sessionId: string) => { e.stopPropagation(); showModal(, { right: true, width: 700 }); }; const deleteSession = (e: React.MouseEvent, sessionId: string) => { e.stopPropagation(); assistMultiviewStore.removeSession(sessionId); }; const emptySpace = 4 - assistMultiviewStore.sessions.length; const placeholder = emptySpace > 0 ? new Array(emptySpace).fill(0) : []; return (
{/* @ts-ignore */}
{`Watching ${assistMultiviewStore.sessions.length} of ${total} Live Sessions`}
{assistMultiviewStore.sortedSessions.map((session: Record) => (
openLiveSession(e, session.sessionId)} className="w-full h-full"> {session.agentToken ? ( ) : (
Loading session
)}
))} {placeholder.map((_, i) => ( ))}
); } export default observer(Multiview);