import { useEffect, useState } from 'react'; import { useActivityLogs } from '@/api/server/activity'; import ServerContentBlock from '@/components/elements/ServerContentBlock'; import { useFlashKey } from '@/plugins/useFlash'; import FlashMessageRender from '@/components/FlashMessageRender'; import Spinner from '@/components/elements/Spinner'; import ActivityLogEntry from '@/components/elements/activity/ActivityLogEntry'; import PaginationFooter from '@/components/elements/table/PaginationFooter'; import { ActivityLogFilters } from '@/api/account/activity'; import { Link } from 'react-router-dom'; import classNames from 'classnames'; import { styles as btnStyles } from '@/components/elements/button/index'; import { XCircleIcon } from '@heroicons/react/solid'; import useLocationHash from '@/plugins/useLocationHash'; export default () => { const { hash } = useLocationHash(); const { clearAndAddHttpError } = useFlashKey('server:activity'); const [filters, setFilters] = useState({ page: 1, sorts: { timestamp: -1 } }); const { data, isValidating, error } = useActivityLogs(filters, { revalidateOnMount: true, revalidateOnFocus: false, }); useEffect(() => { setFilters(value => ({ ...value, filters: { ip: hash.ip, event: hash.event } })); }, [hash]); useEffect(() => { clearAndAddHttpError(error); }, [error]); return ( {(filters.filters?.event || filters.filters?.ip) && (
setFilters(value => ({ ...value, filters: {} }))} > Clear Filters
)} {!data && isValidating ? ( ) : !data?.items.length ? (

No activity logs available for this server.

) : (
{data?.items.map(activity => ( ))}
)} {data && ( setFilters(value => ({ ...value, page }))} /> )}
); };