Add setting for default playback rate

This commit is contained in:
Nicolas Mowen 2024-05-14 05:54:16 -06:00
parent 00b5cd8db2
commit 616815e2f4

View File

@ -9,6 +9,17 @@ import { Button } from "../ui/button";
import useSWR from "swr"; import useSWR from "swr";
import { FrigateConfig } from "@/types/frigateConfig"; import { FrigateConfig } from "@/types/frigateConfig";
import { del as delData } from "idb-keyval"; import { del as delData } from "idb-keyval";
import { usePersistence } from "@/hooks/use-persistence";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuRadioGroup,
DropdownMenuRadioItem,
DropdownMenuTrigger,
} from "../ui/dropdown-menu";
import { isSafari } from "react-device-detect";
const PLAYBACK_RATE_DEFAULT = isSafari ? [0.5, 1, 2] : [0.5, 1, 2, 4, 8, 16];
export default function General() { export default function General() {
const { data: config } = useSWR<FrigateConfig>("config"); const { data: config } = useSWR<FrigateConfig>("config");
@ -38,6 +49,8 @@ export default function General() {
document.title = "General Settings - Frigate"; document.title = "General Settings - Frigate";
}, []); }, []);
const [playbackRate, setPlaybackRate] = usePersistence("playbackRate", 1);
return ( return (
<> <>
<div className="flex flex-col md:flex-row size-full"> <div className="flex flex-col md:flex-row size-full">
@ -64,6 +77,35 @@ export default function General() {
</div> </div>
</div> </div>
<Separator className="flex my-2 bg-secondary" /> <Separator className="flex my-2 bg-secondary" />
<div className="mt-2 space-y-6">
<div className="space-y-0.5">
<div className="text-md">Default Playback Rate</div>
<div className="text-sm text-muted-foreground my-2">
<p>Default playback rate for recordings playback.</p>
</div>
</div>
</div>
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button className="w-20">{`${playbackRate}x`}</Button>
</DropdownMenuTrigger>
<DropdownMenuContent>
<DropdownMenuRadioGroup
onValueChange={(rate) => setPlaybackRate(parseFloat(rate))}
>
{PLAYBACK_RATE_DEFAULT.map((rate) => (
<DropdownMenuRadioItem
key={rate}
className="cursor-pointer"
value={rate.toString()}
>
{rate}x
</DropdownMenuRadioItem>
))}
</DropdownMenuRadioGroup>
</DropdownMenuContent>
</DropdownMenu>
<Separator className="flex my-2 bg-secondary" />
<div className="mt-2 space-y-6"> <div className="mt-2 space-y-6">
<div className="space-y-0.5"> <div className="space-y-0.5">
<div className="text-md">Low Data Mode</div> <div className="text-md">Low Data Mode</div>