diff --git a/src/app/reducers/cameraSettingsReducer.ts b/src/app/reducers/cameraSettingsReducer.ts index c5db67e..0f9fd6d 100644 --- a/src/app/reducers/cameraSettingsReducer.ts +++ b/src/app/reducers/cameraSettingsReducer.ts @@ -71,6 +71,16 @@ export const cameraSettingsReducer = (state: CameraSettings, action: CameraSetti ...state, cameraControls: action.payload, }; + + case "RESET_REGION_PAINTER": + return { + ...state, + regionPainter: { + ...state.regionPainter, + paintedCells: new Map(), + paintMode: "painter", + }, + }; default: return state; } diff --git a/src/features/setup/components/cameraControls/CameraControls.tsx b/src/features/setup/components/cameraControls/CameraControls.tsx index 060d3bc..d8a30fe 100644 --- a/src/features/setup/components/cameraControls/CameraControls.tsx +++ b/src/features/setup/components/cameraControls/CameraControls.tsx @@ -58,7 +58,7 @@ const CameraControls = ({ state, dispatch }: CameraControlProps) => { {({ values }) => (

Controls

-
+
@@ -124,7 +169,12 @@ const Region = ({ state }: RegionProps) => { > Save - +
diff --git a/src/features/setup/hooks/useTargetDetection.ts b/src/features/setup/hooks/useTargetDetection.ts new file mode 100644 index 0000000..748aafd --- /dev/null +++ b/src/features/setup/hooks/useTargetDetection.ts @@ -0,0 +1,30 @@ +import { useMutation } from "@tanstack/react-query"; +import type { ColourDetectionPayload } from "../../../utils/types"; +import { cambase } from "../../../app/config"; + +const sendTargetDetectionData = async (regionData: ColourDetectionPayload) => { + const regions = { + regions: regionData.regions, + }; + const response = await fetch(`${cambase}/TargetDetectionColour-region-update`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(regions), + }); + + if (!response.ok) { + throw new Error("Failed to send target detection data"); + } + return response.json(); +}; + +export const useTargetDetection = () => { + const mutation = useMutation({ + mutationKey: ["colour detection"], + mutationFn: (regionData: ColourDetectionPayload) => sendTargetDetectionData(regionData), + }); + + return { mutation }; +}; diff --git a/src/utils/types.ts b/src/utils/types.ts index b3a21bb..0cfdf98 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -118,6 +118,9 @@ export type CameraSettingsAction = | { type: "SET_BRUSH_SIZE"; payload: number; + } + | { + type: "RESET_REGION_PAINTER"; }; export type CameraStatus = { @@ -141,3 +144,12 @@ export type StoreData = { sanityCheck: boolean; sanityCheckFormula: string; }; + +export type ColourData = { + id: string | number; + cells: number[][]; +}; + +export type ColourDetectionPayload = { + regions: ColourData[]; +};