diff --git a/web/src/pages/Search.tsx b/web/src/pages/Search.tsx index 8b27f6e6a..f668d184e 100644 --- a/web/src/pages/Search.tsx +++ b/web/src/pages/Search.tsx @@ -1,10 +1,11 @@ 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 } from "react-icons/lu"; +import { LuSearchCheck, LuSearchX } from "react-icons/lu"; import useSWR from "swr"; export default function Search() { @@ -27,9 +28,11 @@ export default function Search() { 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 } = useSWR( + const { data: searchResults, isLoading } = useSWR( searchTerm.length > 0 ? ["events/search", { query: searchTerm }] : null, ); @@ -49,39 +52,52 @@ export default function Search() {
- {searchTerm == "" && ( + {searchTerm.length == 0 && (
Search For Detections
)} - {searchResults && - searchResults.map((value) => { - const selected = false; + {searchTerm.length > 0 && searchResults?.length == 0 && ( +
+ + No Detections Found +
+ )} - return ( -
-
- {}} - //onTimeUpdate={onPreviewTimeUpdate} - //onClick={onSelectReview} + {isLoading && ( + + )} + +
+ {searchResults && + searchResults.map((value) => { + const selected = false; + + return ( +
+
+ {}} + //onTimeUpdate={onPreviewTimeUpdate} + //onClick={onSelectReview} + /> +
+
-
-
- ); - })} + ); + })} +
);