import SearchFilterGroup from "@/components/filter/SearchFilterGroup"; import ActivityIndicator from "@/components/indicators/activity-indicator"; import SearchThumbnailPlayer from "@/components/player/SearchThumbnailPlayer"; import { Input } from "@/components/ui/input"; import { Toaster } from "@/components/ui/sonner"; import { SearchResult } from "@/types/search"; import { useEffect, useState } from "react"; import { LuSearchCheck, LuSearchX } from "react-icons/lu"; import useSWR from "swr"; export default function Search() { // search field handler const [searchTimeout, setSearchTimeout] = useState(); const [search, setSearch] = useState(""); const [searchTerm, setSearchTerm] = useState(""); // search api useEffect(() => { if (searchTimeout) { clearTimeout(searchTimeout); } setSearchTimeout( setTimeout(() => { setSearchTimeout(undefined); setSearchTerm(search); }, 500), ); // we only want to update the searchTerm when search changes // eslint-disable-next-line react-hooks/exhaustive-deps }, [search]); const { data: searchResults, isLoading } = useSWR( searchTerm.length > 0 ? ["events/search", { query: searchTerm }] : null, ); return (
setSearch(e.target.value)} /> {}} />
{searchTerm.length == 0 && (
Search For Detections
)} {searchTerm.length > 0 && searchResults?.length == 0 && (
No Detections Found
)} {isLoading && ( )}
{searchResults && searchResults.map((value) => { const selected = false; return (
{}} //onTimeUpdate={onPreviewTimeUpdate} //onClick={onSelectReview} />
); })}
); }