import { useMediaQuery } from '@rocket.chat/fuselage-hooks';
import { GenericTableHeaderCell, usePagination, useSort } from '@rocket.chat/ui-client';
import { useEndpoint } from '@rocket.chat/ui-contexts';
import { useQuery } from '@tanstack/react-query';
import { useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import DeviceManagementAccountRow from './DeviceManagementAccountRow';
import DeviceManagementTable from '../../../../components/deviceManagement/DeviceManagementTable';
import { deviceManagementQueryKeys } from '../../../../lib/queryKeys';
const sortMapping = {
client: 'device.name',
os: 'device.os.name',
loginAt: 'loginAt',
};
const DeviceManagementAccountTable = () => {
const { t } = useTranslation();
const { current, itemsPerPage, setCurrent, setItemsPerPage, ...paginationProps } = usePagination();
const { sortBy, sortDirection, setSort } = useSort<'client' | 'os' | 'loginAt'>('loginAt');
const query = useMemo(
() => ({
sort: JSON.stringify({ [sortMapping[sortBy]]: sortDirection === 'asc' ? 1 : -1 }),
count: itemsPerPage,
offset: current,
}),
[itemsPerPage, current, sortBy, sortDirection],
);
const listSessions = useEndpoint('GET', '/v1/sessions/list');
const queryResult = useQuery({
queryKey: deviceManagementQueryKeys.userSessions(query),
queryFn: () => listSessions(query),
});
const mediaQuery = useMediaQuery('(min-width: 1024px)');
const headers = useMemo(
() => [
{t('Client')}
,
{t('OS')}
,
{t('Last_login')}
,
mediaQuery && {t('Device_ID')},
,
],
[t, mediaQuery, sortDirection, sortBy, setSort],
);
return (
(
)}
current={current}
itemsPerPage={itemsPerPage}
setCurrent={setCurrent}
setItemsPerPage={setItemsPerPage}
paginationProps={paginationProps}
/>
);
};
export default DeviceManagementAccountTable;