mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-12 22:25:24 +03:00
Fetch previews
This commit is contained in:
parent
48d8520ee9
commit
0ce4f62753
@ -4,8 +4,11 @@ import SearchThumbnailPlayer from "@/components/player/SearchThumbnailPlayer";
|
|||||||
import { Input } from "@/components/ui/input";
|
import { Input } from "@/components/ui/input";
|
||||||
import { Toaster } from "@/components/ui/sonner";
|
import { Toaster } from "@/components/ui/sonner";
|
||||||
import useApiFilter from "@/hooks/use-api-filter";
|
import useApiFilter from "@/hooks/use-api-filter";
|
||||||
|
import { useCameraPreviews } from "@/hooks/use-camera-previews";
|
||||||
|
import { cn } from "@/lib/utils";
|
||||||
import { SearchFilter, SearchResult } from "@/types/search";
|
import { SearchFilter, SearchResult } from "@/types/search";
|
||||||
import { useCallback, useEffect, useState } from "react";
|
import { TimeRange } from "@/types/timeline";
|
||||||
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
||||||
import { LuSearchCheck, LuSearchX } from "react-icons/lu";
|
import { LuSearchCheck, LuSearchX } from "react-icons/lu";
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
|
|
||||||
@ -62,13 +65,30 @@ export default function Search() {
|
|||||||
: null,
|
: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const previewTimeRange = useMemo<TimeRange>(() => {
|
||||||
|
if (!searchResults) {
|
||||||
|
return { after: 0, before: 0 };
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
after: Math.min(...searchResults.map((res) => res.start_time)),
|
||||||
|
before: Math.max(
|
||||||
|
...searchResults.map((res) => res.end_time ?? Date.now() / 1000),
|
||||||
|
),
|
||||||
|
};
|
||||||
|
}, [searchResults]);
|
||||||
|
|
||||||
|
const allPreviews = useCameraPreviews(previewTimeRange, {
|
||||||
|
autoRefresh: false,
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex size-full flex-col pt-2 md:py-2">
|
<div className="flex size-full flex-col pt-2 md:py-2">
|
||||||
<Toaster closeButton={true} />
|
<Toaster closeButton={true} />
|
||||||
|
|
||||||
<div className="relative mb-2 flex h-11 items-center justify-between pl-2 pr-2 md:pl-3">
|
<div className="relative mb-2 flex h-11 items-center justify-between pl-2 pr-2 md:pl-3">
|
||||||
<Input
|
<Input
|
||||||
className="w-full bg-muted md:w-1/3"
|
className={cn("mr-2 w-full bg-muted md:mr-0 md:w-1/3")}
|
||||||
placeholder="Search for a specific detection..."
|
placeholder="Search for a specific detection..."
|
||||||
value={search}
|
value={search}
|
||||||
onChange={(e) => setSearch(e.target.value)}
|
onChange={(e) => setSearch(e.target.value)}
|
||||||
@ -113,7 +133,7 @@ export default function Search() {
|
|||||||
<div className="aspect-video overflow-hidden rounded-lg">
|
<div className="aspect-video overflow-hidden rounded-lg">
|
||||||
<SearchThumbnailPlayer
|
<SearchThumbnailPlayer
|
||||||
searchResult={value}
|
searchResult={value}
|
||||||
allPreviews={[]}
|
allPreviews={allPreviews}
|
||||||
scrollLock={false}
|
scrollLock={false}
|
||||||
onClick={() => {}}
|
onClick={() => {}}
|
||||||
//onTimeUpdate={onPreviewTimeUpdate}
|
//onTimeUpdate={onPreviewTimeUpdate}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user