import React, { useEffect } from 'react'; import { connect } from 'react-redux'; import { NoContent, Loader, Pagination } from 'UI'; import { List } from 'immutable'; import SessionItem from 'Shared/SessionItem'; import withPermissions from 'HOCs/withPermissions' import { KEYS } from 'Types/filter/customFilter'; import { applyFilter } from 'Duck/liveSearch'; import { FilterKey } from 'App/types/filter/filterType'; import { addFilterByKeyAndValue, updateCurrentPage } from 'Duck/liveSearch'; import Select from 'Shared/Select'; import SortOrderButton from 'Shared/SortOrderButton'; import { capitalize } from 'App/utils'; import LiveSessionReloadButton from 'Shared/LiveSessionReloadButton'; const AUTOREFRESH_INTERVAL = .5 * 60 * 1000 const PER_PAGE = 10; interface Props { loading: boolean, metaListLoading: boolean list: List, // fetchLiveList: () => Promise, applyFilter: (filter: any) => void, filter: any, // addAttribute: (obj: any) => void, addFilterByKeyAndValue: (key: FilterKey, value: string) => void, updateCurrentPage: (page: number) => void, currentPage: number, totla: number, metaList: any, sort: any, total: number, } function LiveSessionList(props: Props) { const { loading, metaListLoading, filter, list, currentPage, total, metaList = [], sort } = props; var timeoutId: any; const { filters } = filter; const hasUserFilter = filters.map((i: any) => i.key).includes(KEYS.USERID); const sortOptions = metaList.map((i: any) => ({ label: capitalize(i), value: i })).toJS(); // useEffect(() => { // if (metaListLoading || metaList.size === 0 || !!filter.sort) return; // if (sortOptions[0]) { // props.applyFilter({ sort: sortOptions[0].value }); // } // }, [metaListLoading]); // useEffect(() => { // const filteredSessions = filters.size > 0 ? props.list.filter(session => { // let hasValidFilter = true; // filters.forEach(filter => { // if (!hasValidFilter) return; // const _values = filter.value.filter(i => i !== '' && i !== null && i !== undefined).map(i => i.toLowerCase()); // if (filter.key === FilterKey.USERID) { // const _userId = session.userId ? session.userId.toLowerCase() : ''; // hasValidFilter = _values.length > 0 ? (_values.includes(_userId) && hasValidFilter) || _values.some(i => _userId.includes(i)) : hasValidFilter; // } // if (filter.category === FilterCategory.METADATA) { // const _source = session.metadata[filter.key] ? session.metadata[filter.key].toLowerCase() : ''; // hasValidFilter = _values.length > 0 ? (_values.includes(_source) && hasValidFilter) || _values.some(i => _source.includes(i)) : hasValidFilter; // } // }) // return hasValidFilter; // }) : props.list; // setSessions(filteredSessions); // }, [filters, list]); useEffect(() => { props.applyFilter({ ...filter}); timeout(); return () => { clearTimeout(timeoutId) } }, []) const onUserClick = (userId: string, userAnonymousId: string) => { if (userId) { props.addFilterByKeyAndValue(FilterKey.USERID, userId); } else { props.addFilterByKeyAndValue(FilterKey.USERANONYMOUSID, userAnonymousId); } } const onSortChange = ({ value }: any) => { props.applyFilter({ sort: value.value }); } const timeout = () => { timeoutId = setTimeout(() => { props.applyFilter({ ...filter}); timeout(); }, AUTOREFRESH_INTERVAL); } return (

Live Sessions {total}

props.applyFilter({ ...filter }) } />
Sort By