From feddaa1eb075978e5082d242b73d7173d7e72c79 Mon Sep 17 00:00:00 2001 From: Toba Ojo Date: Mon, 10 Nov 2025 13:44:29 +0000 Subject: [PATCH] - addressed bugs flagged by BR --- .../CameraOverview/SnapshotContainer.tsx | 13 +-- .../CameraSettings/CameraSettingFields.tsx | 105 +++++++----------- .../CameraSettings/CameraSettings.tsx | 3 +- src/components/UI/NavigationArrow.tsx | 8 +- src/hooks/useCameraConfig.ts | 2 +- src/hooks/useCameraZoom.ts | 1 + src/index.css | 6 + src/pages/RearCamera.tsx | 2 +- src/types/types.ts | 1 + 9 files changed, 60 insertions(+), 81 deletions(-) diff --git a/src/components/CameraOverview/SnapshotContainer.tsx b/src/components/CameraOverview/SnapshotContainer.tsx index 0efc454..2b3e1e1 100644 --- a/src/components/CameraOverview/SnapshotContainer.tsx +++ b/src/components/CameraOverview/SnapshotContainer.tsx @@ -10,18 +10,9 @@ type SnapshotContainerProps = { onZoomLevelChange?: (level: number) => void; }; -export const SnapshotContainer = ({ side, settingsPage, zoomLevel, onZoomLevelChange }: SnapshotContainerProps) => { +export const SnapshotContainer = ({ side, settingsPage }: SnapshotContainerProps) => { const { canvasRef, isError, isPending } = useGetOverviewSnapshot(side); - const handleZoomClick = () => { - const baseLevel = zoomLevel ?? 1; - const newLevel = baseLevel >= 4 ? 1 : baseLevel * 2; - - if (onZoomLevelChange) onZoomLevelChange(newLevel); - - if (!zoomLevel) return; - }; - return (
@@ -32,7 +23,7 @@ export const SnapshotContainer = ({ side, settingsPage, zoomLevel, onZoomLevelCh
)} - + ); diff --git a/src/components/CameraSettings/CameraSettingFields.tsx b/src/components/CameraSettings/CameraSettingFields.tsx index 1f2d743..c7040bf 100644 --- a/src/components/CameraSettings/CameraSettingFields.tsx +++ b/src/components/CameraSettings/CameraSettingFields.tsx @@ -32,30 +32,10 @@ const CameraSettingFields = ({ const parsed = parseRTSPUrl(initialData?.propURI?.value); const cameraMode = cameraModeQuery?.data?.propDayNightMode?.value; - const handleModeClick = async (mode: string) => { - await cameraModeMutation.mutate({ camera: cameraControllerSide, mode }); - }; useEffect(() => { if (!query?.data) return; onZoomLevelChange?.(apiZoom); - }, [query?.data, onZoomLevelChange]); - - // const getZoomLevel = (levelstring: string | undefined) => { - // console.log(levelstring); - // switch (levelstring) { - // case "1x": - // return 1; - - // case "2x": - // return 2; - - // case "4x": - // return 4; - - // default: - // return 1; - // } - // }; + }, [query?.data, onZoomLevelChange, apiZoom]); const initialValues = useMemo( () => ({ @@ -64,11 +44,11 @@ const CameraSettingFields = ({ userName: parsed?.username ?? "", password: parsed?.password ?? "", id: initialData?.id, - + mode: cameraMode ?? "day", zoom: apiZoom, }), - // eslint-disable-next-line react-hooks/exhaustive-deps - [initialData?.id, initialData?.propURI?.value, zoomLevel] + + [initialData?.id, initialData?.propURI?.value, parsed?.username, parsed?.password, cameraMode, apiZoom] ); const validateValues = (values: CameraSettingValues) => { @@ -95,6 +75,7 @@ const CameraSettingFields = ({ mutation.mutate(zoomInOptions); }; + const selectedZoom = zoomLevel ?? 1; return ( - {({ errors, touched }) => ( -
+ {({ errors, touched, values, setFieldValue, isSubmitting }) => ( +
{touched.friendlyName && errors.friendlyName && ( @@ -117,7 +98,6 @@ const CameraSettingFields = ({ type="text" className="p-2 border border-gray-400 rounded-lg" placeholder="Enter camera name" - disabled />
@@ -132,7 +112,6 @@ const CameraSettingFields = ({ type="text" className="p-2 border border-gray-400 rounded-lg" placeholder="RTSP://..." - disabled /> @@ -148,7 +127,6 @@ const CameraSettingFields = ({ className="p-2 border border-gray-400 rounded-lg" placeholder="Enter user name" autoComplete="username" - disabled /> @@ -164,7 +142,6 @@ const CameraSettingFields = ({ type={showPwd ? "text" : "password"} className="p-2 border border-gray-400 rounded-lg w-full " placeholder="Enter password" - disabled />
-
- - +
+ {["day", "night"].map((el) => ( +
+ { + setFieldValue("mode", el); + await cameraModeMutation.mutateAsync({ camera: cameraControllerSide, mode: el }); + }} + /> + +
+ ))}
- {/*
- {updateCameraConfigError ? ( - - ) : ( - - )} -
*/} + } +
)} diff --git a/src/components/CameraSettings/CameraSettings.tsx b/src/components/CameraSettings/CameraSettings.tsx index 29fa40a..22156fc 100644 --- a/src/components/CameraSettings/CameraSettings.tsx +++ b/src/components/CameraSettings/CameraSettings.tsx @@ -18,10 +18,9 @@ const CameraSettings = ({ const { data, updateCameraConfig, updateCameraConfigError } = useFetchCameraConfig(side); return ( - +
- { { navigationDest("a")} /> ) : ( navigationDest("b")} /> )} @@ -49,14 +49,14 @@ const NavigationArrow = ({ side, settingsPage }: NavigationArrowProps) => { navigationDest("Front")} /> navigationDest("Rear")} /> diff --git a/src/hooks/useCameraConfig.ts b/src/hooks/useCameraConfig.ts index df4e30a..cd78a43 100644 --- a/src/hooks/useCameraConfig.ts +++ b/src/hooks/useCameraConfig.ts @@ -31,7 +31,7 @@ const updateCamerasideConfig = async (data: { id: string | number; friendlyName: method: "POST", body: JSON.stringify(updateConfigPayload), }); - if (!response.ok) throw new Error("Feature unavailable: Coming soon"); + if (!response.ok) throw new Error("Please make sure fields are filled in correctly"); }; export const useFetchCameraConfig = (cameraSide: string) => { diff --git a/src/hooks/useCameraZoom.ts b/src/hooks/useCameraZoom.ts index 7862f1f..e7e174a 100644 --- a/src/hooks/useCameraZoom.ts +++ b/src/hooks/useCameraZoom.ts @@ -11,6 +11,7 @@ const getCameraMode = async (options: { camera: string }) => { }; const updateCameraMode = async (options: { camera: string; mode: string }) => { + console.log(options); const dayNightPayload = { id: options.camera, fields: [ diff --git a/src/index.css b/src/index.css index 326a490..92bfa28 100644 --- a/src/index.css +++ b/src/index.css @@ -31,3 +31,9 @@ body { } } } + +.arrow-outline path { + stroke: black; /* outline color */ + stroke-width: 20px; /* thickness of outline (tweak this) */ + stroke-linejoin: round; +} diff --git a/src/pages/RearCamera.tsx b/src/pages/RearCamera.tsx index e73d7a4..1306908 100644 --- a/src/pages/RearCamera.tsx +++ b/src/pages/RearCamera.tsx @@ -6,7 +6,7 @@ import { useState } from "react"; const RearCamera = () => { const [zoomLevel, setZoomLevel] = useState(1); return ( -
+
>;