From 5403ee1c8d47b124b0ff3489d685f2950493798c Mon Sep 17 00:00:00 2001 From: Stavros kois Date: Sat, 10 Aug 2024 14:37:35 +0300 Subject: [PATCH] add shortcut and query for live view --- web/src/views/live/LiveDashboardView.tsx | 33 ++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/web/src/views/live/LiveDashboardView.tsx b/web/src/views/live/LiveDashboardView.tsx index 00c046224..c48654aa1 100644 --- a/web/src/views/live/LiveDashboardView.tsx +++ b/web/src/views/live/LiveDashboardView.tsx @@ -31,6 +31,11 @@ import { cn } from "@/lib/utils"; import { LivePlayerError, LivePlayerMode } from "@/types/live"; import { FaCompress, FaExpand } from "react-icons/fa"; import { useResizeObserver } from "@/hooks/resize-observer"; +import useKeyboardListener, { + KeyModifiers, +} from "@/hooks/use-keyboard-listener"; +import { useSearchParams } from "react-router-dom"; +import { useSearchEffect } from "@/hooks/use-overlay-state"; type LiveDashboardViewProps = { cameras: CameraConfig[]; @@ -247,6 +252,34 @@ export default function LiveDashboardView({ [setPreferredLiveModes], ); + const onKeyboardShortcut = useCallback( + (key: string, modifiers: KeyModifiers) => { + if (!modifiers.down) { + return; + } + + switch (key) { + case "f": + toggleFullscreen(); + break; + } + }, + [toggleFullscreen], + ); + + useKeyboardListener(["f"], onKeyboardShortcut); + const handleFullScreenQuery = useCallback( + (value: string) => { + const desiredState = value === "true"; + if (fullscreen === desiredState) { + return; + } + toggleFullscreen; + }, + [fullscreen, toggleFullscreen], + ); + useSearchEffect("fullscreen", handleFullScreenQuery); + return (