import React, { useEffect } from 'react'; import { NoContent, Loader, Pagination, Button } from 'UI'; import SessionItem from 'Shared/SessionItem'; import withPermissions from 'HOCs/withPermissions'; import { KEYS } from 'Types/filter/customFilter'; import { FilterKey } from 'App/types/filter/filterType'; import Select from 'Shared/Select'; import SortOrderButton from 'Shared/SortOrderButton'; import { capitalize } from 'App/utils'; import LiveSessionReloadButton from 'Shared/LiveSessionReloadButton'; import cn from 'classnames'; import AnimatedSVG, { ICONS } from 'Shared/AnimatedSVG/AnimatedSVG'; import { numberWithCommas } from 'App/utils'; import { useStore } from 'App/mstore'; import { observer } from 'mobx-react-lite'; const AUTOREFRESH_INTERVAL = 2 * 60 * 1000; const PER_PAGE = 10; function LiveSessionList() { const { searchStoreLive, sessionStore, customFieldStore } = useStore(); const filter = searchStoreLive.instance; const list = sessionStore.liveSessions; const totalLiveSessions = sessionStore.totalLiveSessions; const loading = sessionStore.loadingLiveSessions; const { currentPage } = searchStoreLive; const metaList = customFieldStore.list const metaListLoading = customFieldStore.isLoading; let timeoutId: any; const { filters } = filter; const hasUserFilter = filters.map((i: any) => i.key).includes(KEYS.USERID); const sortOptions = [{ label: 'Start Time', value: 'timestamp' }].concat( metaList .map(({ key} : any) => ({ label: capitalize(key), value: key })) ); useEffect(() => { if (metaListLoading) return; const _filter = { ...filter }; if (sortOptions[1] && !filter.sort) { _filter.sort = sortOptions[1].value; } searchStoreLive.edit(_filter); timeout(); return () => { clearTimeout(timeoutId); }; }, [metaListLoading]); const refetch = () => { searchStoreLive.edit({ ...filter }) void searchStoreLive.fetchSessions(); } const onUserClick = (userId: string, userAnonymousId: string) => { if (userId) { searchStoreLive.addFilterByKeyAndValue(FilterKey.USERID, userId); } else { searchStoreLive.addFilterByKeyAndValue(FilterKey.USERANONYMOUSID, userAnonymousId); } }; const onSortChange = ({ value }: any) => { searchStoreLive.edit({ sort: value.value }); void searchStoreLive.fetchSessions(); }; const timeout = () => { timeoutId = setTimeout(() => { refetch(); timeout(); }, AUTOREFRESH_INTERVAL); }; return (
}
show={!loading && list.length === 0}
>