From a5afcd5757376567539e2f86afa02b531a4cdde1 Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Tue, 24 Jun 2025 11:04:56 +0530 Subject: [PATCH] Implement resetStates hook and integrate it into Header component for state management --- .../components/layout/sidebarLeft/Header.tsx | 11 +++++++- app/src/hooks/temp.md | 0 app/src/hooks/useResetStates.ts | 26 +++++++++++++++++++ app/src/modules/scene/sceneContext.tsx | 15 +++++++++-- app/src/store/builder/useAisleStore.ts | 7 +++++ 5 files changed, 56 insertions(+), 3 deletions(-) delete mode 100644 app/src/hooks/temp.md create mode 100644 app/src/hooks/useResetStates.ts diff --git a/app/src/components/layout/sidebarLeft/Header.tsx b/app/src/components/layout/sidebarLeft/Header.tsx index a9759de..edcd2e8 100644 --- a/app/src/components/layout/sidebarLeft/Header.tsx +++ b/app/src/components/layout/sidebarLeft/Header.tsx @@ -5,16 +5,25 @@ import FileMenu from "../../ui/FileMenu"; import { useToggleStore } from "../../../store/useUIToggleStore"; import useModuleStore from "../../../store/useModuleStore"; import { useNavigate } from "react-router-dom"; +import useRestStates from "../../../hooks/useResetStates"; const Header: React.FC = () => { const { toggleUILeft, toggleUIRight, setToggleUI } = useToggleStore(); const { activeModule } = useModuleStore(); const navigate = useNavigate(); + const { resetStates } = useRestStates(); return (
-
diff --git a/app/src/hooks/temp.md b/app/src/hooks/temp.md deleted file mode 100644 index e69de29..0000000 diff --git a/app/src/hooks/useResetStates.ts b/app/src/hooks/useResetStates.ts new file mode 100644 index 0000000..87bef11 --- /dev/null +++ b/app/src/hooks/useResetStates.ts @@ -0,0 +1,26 @@ +import { useVersionContext } from "../modules/builder/version/versionContext"; +import { useSceneContext } from "../modules/scene/sceneContext"; +import { useProductContext } from "../modules/simulation/products/productContext"; +import { useVersionHistoryStore } from "../store/builder/useVersionHistoryStore"; + +const useRestStates = () => { + const { selectedVersionStore } = useVersionContext(); + const { clearSelectedVersion } = selectedVersionStore(); + const { selectedProductStore } = useProductContext(); + const { clearSelectedProduct } = selectedProductStore(); + const { clearVersions } = useVersionHistoryStore(); + const { clearStores } = useSceneContext(); + + const resetStates = () => { + clearSelectedVersion(); + clearSelectedProduct(); + clearVersions(); + clearStores(); + }; + + return { + resetStates, + }; +}; + +export default useRestStates; \ No newline at end of file diff --git a/app/src/modules/scene/sceneContext.tsx b/app/src/modules/scene/sceneContext.tsx index 8d742ed..a339ddf 100644 --- a/app/src/modules/scene/sceneContext.tsx +++ b/app/src/modules/scene/sceneContext.tsx @@ -28,6 +28,8 @@ type SceneContextValue = { vehicleStore: VehicleStoreType; storageUnitStore: StorageUnitStoreType; + clearStores: () => void; + layout: 'Main Layout' | 'Comparison Layout'; }; @@ -55,8 +57,17 @@ export function SceneProvider({ const storageUnitStore = useMemo(() => createStorageUnitStore(), []); const clearStores = useMemo(() => () => { - assetStore().clearAssets(); - }, [assetStore]); + assetStore.getState().clearAssets(); + aisleStore.getState().clearAisles(); + eventStore.getState().clearEvents(); + productStore.getState().clearProducts(); + materialStore.getState().clearMaterials(); + armBotStore.getState().clearArmBots(); + machineStore.getState().clearMachines(); + conveyorStore.getState().clearConveyors(); + vehicleStore.getState().clearVehicles(); + storageUnitStore.getState().clearStorageUnits(); + }, [assetStore, aisleStore, eventStore, productStore, materialStore, armBotStore, machineStore, conveyorStore, vehicleStore, storageUnitStore]); const contextValue = useMemo(() => ( { diff --git a/app/src/store/builder/useAisleStore.ts b/app/src/store/builder/useAisleStore.ts index 35c79df..4e9e6ad 100644 --- a/app/src/store/builder/useAisleStore.ts +++ b/app/src/store/builder/useAisleStore.ts @@ -8,6 +8,7 @@ interface AisleStore { updateAisle: (uuid: string, updated: Partial) => void; removeAisle: (uuid: string) => void; removePoint: (uuid: string) => Aisles; + clearAisles: () => void; setPosition: ( pointUuid: string, position: [number, number, number] @@ -92,6 +93,12 @@ export const createAisleStore = () => { return removedAisles; }, + clearAisles: () => { + set((state) => { + state.aisles = []; + }) + }, + setPosition: (pointUuid, position) => { let updatedAisle: Aisle | undefined; set((state) => {