import React, { FC, useState, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { SupportedActionType, AllSupportedPageAction, AllSupportedCommentAction, AllSupportedActionType, } from '~/interfaces/activity'; import { useSWRxActivityList } from '~/stores/activity'; import PaginationWrapper from '../PaginationWrapper'; import { ActivityTable } from './AuditLog/ActivityTable'; import { SelectActionDropdown } from './AuditLog/SelectActionDropdown'; const PAGING_LIMIT = 10; export const AuditLogManagement: FC = () => { const { t } = useTranslation(); /* * State */ const [activePage, setActivePage] = useState(1); const offset = (activePage - 1) * PAGING_LIMIT; const [actionMap, setActionMap] = useState( new Map(AllSupportedActionType.map(action => [action, true])), ); /* * Fetch */ const selectedActionList = Array.from(actionMap.entries()).filter(v => v[1]).map(v => v[0]); const searchFilter = { action: selectedActionList }; const { data: activityListData, error } = useSWRxActivityList(PAGING_LIMIT, offset, searchFilter); const activityList = activityListData?.docs != null ? activityListData.docs : []; const totalActivityNum = activityListData?.totalDocs != null ? activityListData.totalDocs : 0; const isLoading = activityListData === undefined && error == null; /* * Functions */ const setActivePageHandler = useCallback((selectedPageNum: number) => { setActivePage(selectedPageNum); }, []); const selectActionCheckboxChangedHandler = useCallback((action: SupportedActionType) => { actionMap.set(action, !actionMap.get(action)); setActionMap(new Map(actionMap.entries())); }, [actionMap, setActionMap]); const selectAllActionCheckboxChangedHandler = useCallback((actions: SupportedActionType[], isChecked) => { actions.forEach(action => actionMap.set(action, isChecked)); setActionMap(new Map(actionMap.entries())); }, [actionMap, setActionMap]); return (

{t('AuditLog')}

{ isLoading ? (
) : ( <> ) }
); };