From 9b8485c551c30811b6ccda5dc5bc4e2cc44ebfeb Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Wed, 27 Mar 2024 10:38:10 -0600 Subject: [PATCH] Add mobile camera drawer to separate component --- .../components/overlay/MobileCameraDrawer.tsx | 41 +++++++++++++++++++ web/src/views/events/RecordingView.tsx | 39 ++++-------------- 2 files changed, 50 insertions(+), 30 deletions(-) create mode 100644 web/src/components/overlay/MobileCameraDrawer.tsx diff --git a/web/src/components/overlay/MobileCameraDrawer.tsx b/web/src/components/overlay/MobileCameraDrawer.tsx new file mode 100644 index 000000000..a0d2ad0e9 --- /dev/null +++ b/web/src/components/overlay/MobileCameraDrawer.tsx @@ -0,0 +1,41 @@ +import { useState } from "react"; +import { Drawer, DrawerContent, DrawerTrigger } from "../ui/drawer"; +import { Button } from "../ui/button"; +import { FaVideo } from "react-icons/fa"; + +type MobileCameraDrawerProps = { + allCameras: string[]; + selected: string; + onSelectCamera: (cam: string) => void; +}; +export default function MobileCameraDrawer({ + allCameras, + selected, + onSelectCamera, +}: MobileCameraDrawerProps) { + const [cameraDrawer, setCameraDrawer] = useState(false); + + return ( + + + + + + {allCameras.map((cam) => ( +
{ + onSelectCamera(cam); + setCameraDrawer(false); + }} + > + {cam.replaceAll("_", " ")} +
+ ))} +
+
+ ); +} diff --git a/web/src/views/events/RecordingView.tsx b/web/src/views/events/RecordingView.tsx index eb27040e9..3e945f235 100644 --- a/web/src/views/events/RecordingView.tsx +++ b/web/src/views/events/RecordingView.tsx @@ -1,5 +1,4 @@ import ReviewCard from "@/components/card/ReviewCard"; -import FilterCheckBox from "@/components/filter/FilterCheckBox"; import ReviewFilterGroup from "@/components/filter/ReviewFilterGroup"; import ExportDialog from "@/components/overlay/ExportDialog"; import PreviewPlayer, { @@ -9,7 +8,6 @@ import { DynamicVideoController } from "@/components/player/dynamic/DynamicVideo import DynamicVideoPlayer from "@/components/player/dynamic/DynamicVideoPlayer"; import MotionReviewTimeline from "@/components/timeline/MotionReviewTimeline"; import { Button } from "@/components/ui/button"; -import { Drawer, DrawerContent, DrawerTrigger } from "@/components/ui/drawer"; import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group"; import { useOverlayState } from "@/hooks/use-overlay-state"; import { ExportMode } from "@/types/filter"; @@ -31,12 +29,12 @@ import { useState, } from "react"; import { isDesktop, isMobile } from "react-device-detect"; -import { FaCircle, FaVideo } from "react-icons/fa"; import { IoMdArrowRoundBack } from "react-icons/io"; import { useNavigate } from "react-router-dom"; import { Toaster } from "@/components/ui/sonner"; import useSWR from "swr"; import { TimeRange } from "@/types/timeline"; +import MobileCameraDrawer from "@/components/overlay/MobileCameraDrawer"; const SEGMENT_DURATION = 30; type TimelineType = "timeline" | "events"; @@ -70,7 +68,6 @@ export function RecordingView({ const [mainCamera, setMainCamera] = useState(startCamera); const mainControllerRef = useRef(null); const previewRefs = useRef<{ [camera: string]: PreviewController }>({}); - const [cameraDrawer, setCameraDrawer] = useState(false); const [playbackStart, setPlaybackStart] = useState(startTime); @@ -231,32 +228,14 @@ export function RecordingView({
{isMobile && ( - - - - - - {allCameras.map((cam) => ( -
{ - setPlaybackStart(currentTime); - setMainCamera(cam); - setCameraDrawer(false); - }} - > - {cam.replaceAll("_", " ")} -
- ))} -
-
+ { + setPlaybackStart(currentTime); + setMainCamera(cam); + }} + /> )}