import { useState, useEffect, FormEvent } from 'react'; import { useGetLogs } from '../generated/anthoLumeAPIV1'; import type { LogsResponse } from '../generated/model'; import { Button } from '../components/Button'; import { LoadingState } from '../components'; import { useDebounce } from '../hooks/useDebounce'; import { Search2Icon } from '../icons'; export default function AdminLogsPage() { const [filter, setFilter] = useState(''); const [activeFilter, setActiveFilter] = useState(''); const debouncedFilter = useDebounce(filter, 300); useEffect(() => { setActiveFilter(debouncedFilter); }, [debouncedFilter]); const { data: logsData, isLoading } = useGetLogs(activeFilter ? { filter: activeFilter } : {}); const logs = logsData?.status === 200 ? ((logsData.data as LogsResponse).logs ?? []) : []; const handleFilterSubmit = (e: FormEvent) => { e.preventDefault(); setActiveFilter(filter); }; return (
setFilter(e.target.value)} className="w-full flex-1 appearance-none rounded-none border border-gray-300 bg-white p-2 text-base text-gray-700 shadow-sm placeholder:text-gray-400 focus:border-transparent focus:outline-none focus:ring-2 focus:ring-purple-600" placeholder="JQ Filter" />
{isLoading ? ( ) : ( logs.map((log, index) => ( {typeof log === 'string' ? log : JSON.stringify(log)} )) )}
); }