- implement camera zoom controls and state management
This commit is contained in:
@@ -3,9 +3,14 @@ import { CameraFeedContext } from "../context/CameraFeedContext";
|
||||
import { initialState, reducer } from "../reducers/cameraFeedReducer";
|
||||
import { useBlackBoard } from "../../hooks/useBlackBoard";
|
||||
import type { CameraFeedState } from "../../types/types";
|
||||
import { useCameraZoom } from "../../features/cameras/hooks/useCameraZoom";
|
||||
|
||||
export const CameraFeedProvider = ({ children }: { children: ReactNode }) => {
|
||||
const { blackboardMutation } = useBlackBoard();
|
||||
const { cameraZoomQuery: cameraZoomQueryA } = useCameraZoom("A");
|
||||
const { cameraZoomQuery: cameraZoomQueryB } = useCameraZoom("B");
|
||||
const { cameraZoomQuery: cameraZoomQueryC } = useCameraZoom("C");
|
||||
|
||||
const [state, dispatch] = useReducer(reducer, initialState);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -29,5 +34,42 @@ export const CameraFeedProvider = ({ children }: { children: ReactNode }) => {
|
||||
fetchBlackBoardData();
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
const fetchZoomLevels = async () => {
|
||||
const [resultA, resultB, resultC] = await Promise.all([
|
||||
cameraZoomQueryA.refetch(),
|
||||
cameraZoomQueryB.refetch(),
|
||||
cameraZoomQueryC.refetch(),
|
||||
]);
|
||||
|
||||
console.log(resultA?.data);
|
||||
const zoomLevelAnumber = parseFloat(resultA.data?.propPhysCurrent?.value);
|
||||
const zoomLevelBnumber = parseFloat(resultB.data?.propPhysCurrent?.value);
|
||||
const zoomLevelCnumber = parseFloat(resultC.data?.propPhysCurrent?.value);
|
||||
|
||||
if (resultA.data) {
|
||||
dispatch({
|
||||
type: "SET_ZOOM_LEVEL",
|
||||
payload: { cameraFeedID: "A", zoomLevel: zoomLevelAnumber },
|
||||
});
|
||||
}
|
||||
|
||||
if (resultB.data) {
|
||||
dispatch({
|
||||
type: "SET_ZOOM_LEVEL",
|
||||
payload: { cameraFeedID: "B", zoomLevel: zoomLevelBnumber },
|
||||
});
|
||||
}
|
||||
|
||||
if (resultC.data) {
|
||||
dispatch({
|
||||
type: "SET_ZOOM_LEVEL",
|
||||
payload: { cameraFeedID: "C", zoomLevel: zoomLevelCnumber },
|
||||
});
|
||||
}
|
||||
};
|
||||
fetchZoomLevels();
|
||||
}, []);
|
||||
|
||||
return <CameraFeedContext.Provider value={{ state, dispatch }}>{children}</CameraFeedContext.Provider>;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user