From 8e7c5a1aa06feeec46b42c15e85b68c5246e11be Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Mon, 1 Sep 2025 17:36:40 +0530 Subject: [PATCH] added api fallback for sockets --- .../components/Dashboard/DashboardHome.tsx | 27 +- .../Dashboard/DashboardProjects.tsx | 29 +- app/src/components/Dashboard/SidePannel.tsx | 12 +- .../layout/sidebarLeft/assetList/Assets.tsx | 2 +- .../properties/AisleProperties.tsx | 4 +- .../properties/SelectedAisleProperties.tsx | 33 +- .../properties/SelectedDecalProperties.tsx | 54 +- .../properties/SelectedFloorProperties.tsx | 108 ++-- .../properties/SelectedWallProperties.tsx | 83 +-- .../components/ui/collaboration/Messages.tsx | 54 +- app/src/components/ui/inputs/Search.tsx | 33 +- .../Decal/decalCreator/decalCreator.tsx | 56 +- .../eventHandler/useDecalEventHandlers.ts | 106 ++-- .../aisle/aisleCreator/aisleCreator.tsx | 479 +++--------------- .../builder/asset/functions/addAssetModel.ts | 69 ++- .../model/eventHandlers/useEventHandlers.ts | 65 +-- app/src/modules/builder/dfx/LoadBlueprint.tsx | 33 +- .../floor/floorCreator/floorCreator.tsx | 80 +-- app/src/modules/builder/line/line.tsx | 270 +++++----- app/src/modules/builder/point/point.tsx | 325 ++++++------ .../builder/wall/wallCreator/wallCreator.tsx | 203 ++++---- .../Instances/Instance/wallAssetInstance.tsx | 58 ++- .../builder/wallAsset/wallAssetCreator.tsx | 28 +- .../builder/zone/zoneCreator/zoneCreator.tsx | 81 +-- .../socket/socketResponses.dev.tsx | 12 +- app/src/modules/scene/controls/controls.tsx | 4 +- .../selection2D/moveControls2D.tsx | 130 ++--- .../selection2D/selectionControls2D.tsx | 192 +++---- .../selection3D/copyPasteControls3D.tsx | 49 +- .../selection3D/duplicationControls3D.tsx | 48 +- .../selection3D/moveControls3D.tsx | 25 +- .../selection3D/rotateControls3D.tsx | 25 +- .../selection3D/selectionControls3D.tsx | 40 +- .../selection3D/transformControls3D.tsx | 61 ++- .../transformControls/transformControls.tsx | 61 ++- .../handlers/use2DRedoHandler.ts | 316 +++++++----- .../handlers/use2DUndoHandler.ts | 316 +++++++----- .../handlers/use3DRedoHandler.ts | 133 +++-- .../handlers/use3DUndoHandler.ts | 153 +++--- app/src/modules/scene/scene.tsx | 4 +- app/src/pages/Dashboard.tsx | 2 +- app/src/pages/Project.tsx | 2 +- app/src/store/builder/store.ts | 32 +- 43 files changed, 2034 insertions(+), 1863 deletions(-) diff --git a/app/src/components/Dashboard/DashboardHome.tsx b/app/src/components/Dashboard/DashboardHome.tsx index 0569c08..cc94530 100644 --- a/app/src/components/Dashboard/DashboardHome.tsx +++ b/app/src/components/Dashboard/DashboardHome.tsx @@ -39,7 +39,7 @@ const DashboardHome: React.FC = () => { if (JSON.stringify(projects) !== JSON.stringify(recentProjects)) { setRecentProjects(projects); } - } catch (error) {} + } catch (error) { } }; const handleRecentProjectSearch = async (inputValue: string) => { @@ -66,7 +66,7 @@ const DashboardHome: React.FC = () => { // ); // - //socket for delete Project + // SOCKET for delete Project const deleteProject = { projectId, organization, @@ -90,7 +90,7 @@ const DashboardHome: React.FC = () => { }; }); setIsSearchActive(false); - } catch (error) {} + } catch (error) { } }; const handleDuplicateRecentProject = async ( @@ -98,15 +98,18 @@ const DashboardHome: React.FC = () => { projectName: string, thumbnail: string ) => { - const duplicateRecentProjectData = { - userId, - thumbnail, - organization, - projectUuid: generateUniqueId(), - refProjectID: projectId, - projectName, - }; - projectSocket.emit("v1:project:Duplicate", duplicateRecentProjectData); + if (projectSocket) { + + const duplicateRecentProjectData = { + userId, + thumbnail, + organization, + projectUuid: generateUniqueId(), + refProjectID: projectId, + projectName, + }; + projectSocket.emit("v1:project:Duplicate", duplicateRecentProjectData); + } }; const renderProjects = () => { diff --git a/app/src/components/Dashboard/DashboardProjects.tsx b/app/src/components/Dashboard/DashboardProjects.tsx index ba2db7b..536dd24 100644 --- a/app/src/components/Dashboard/DashboardProjects.tsx +++ b/app/src/components/Dashboard/DashboardProjects.tsx @@ -60,7 +60,7 @@ const DashboardProjects: React.FC = () => { if (JSON.stringify(projects) !== JSON.stringify(workspaceProjects)) { setWorkspaceProjects(projects); } - } catch (error) {} + } catch (error) { } }; const handleDeleteProject = async (projectId: any) => { @@ -77,7 +77,7 @@ const DashboardProjects: React.FC = () => { userId, }; - //socket for deleting the project + // SOCKET for deleting the project if (projectSocket) { projectSocket.emit("v1:project:delete", deleteProjects); } else { @@ -95,7 +95,7 @@ const DashboardProjects: React.FC = () => { }; }); setIsSearchActive(false); - } catch (error) {} + } catch (error) { } }; const handleDuplicateWorkspaceProject = async ( @@ -110,16 +110,17 @@ const DashboardProjects: React.FC = () => { // projectName // ); // console.log("duplicatedProject: ", duplicatedProject); - - const duplicateProjectData = { - userId, - thumbnail, - organization, - projectUuid: generateUniqueId(), - refProjectID: projectId, - projectName, - }; - projectSocket.emit("v1:project:Duplicate", duplicateProjectData); + if (projectSocket) { + const duplicateProjectData = { + userId, + thumbnail, + organization, + projectUuid: generateUniqueId(), + refProjectID: projectId, + projectName, + }; + projectSocket.emit("v1:project:Duplicate", duplicateProjectData); + } }; const renderProjects = () => { @@ -166,7 +167,7 @@ const DashboardProjects: React.FC = () => { try { const sharedWithMe = await sharedWithMeProjects(); setSharedWithMeProjects(sharedWithMe); - } catch {} + } catch { } }; useEffect(() => { diff --git a/app/src/components/Dashboard/SidePannel.tsx b/app/src/components/Dashboard/SidePannel.tsx index 2c0ad64..15e704c 100644 --- a/app/src/components/Dashboard/SidePannel.tsx +++ b/app/src/components/Dashboard/SidePannel.tsx @@ -38,12 +38,13 @@ const SidePannel: React.FC = ({ setActiveTab, activeTab }) => { const handleCreateNewProject = async () => { const token = localStorage.getItem("token"); const refreshToken = localStorage.getItem("refreshToken"); - console.log("refreshToken: ", refreshToken); + if (!token || !refreshToken) { + console.error('token expired'); + return; + } try { const projectId = generateProjectId(); - useSocketStore - .getState() - .initializeSocket(email, organization, token, refreshToken); + useSocketStore.getState().initializeSocket(email, organization, token, refreshToken); //API for creating new Project // const project = await createProject( @@ -60,7 +61,6 @@ const SidePannel: React.FC = ({ setActiveTab, activeTab }) => { projectUuid: projectId, }; - console.log("projectSocket: ", projectSocket); if (projectSocket) { const handleResponse = (data: any) => { if (data.message === "Project created successfully") { @@ -90,7 +90,7 @@ const SidePannel: React.FC = ({ setActiveTab, activeTab }) => {
{userName ? userName.charAt(0).toUpperCase() + - userName.slice(1).toLowerCase() + userName.slice(1).toLowerCase() : "Anonymous"}
diff --git a/app/src/components/layout/sidebarLeft/assetList/Assets.tsx b/app/src/components/layout/sidebarLeft/assetList/Assets.tsx index 5294be5..ce41971 100644 --- a/app/src/components/layout/sidebarLeft/assetList/Assets.tsx +++ b/app/src/components/layout/sidebarLeft/assetList/Assets.tsx @@ -75,7 +75,7 @@ const Assets: React.FC = () => { return (
- +
{isLoading ? ( diff --git a/app/src/components/layout/sidebarRight/properties/AisleProperties.tsx b/app/src/components/layout/sidebarRight/properties/AisleProperties.tsx index ca2317d..9bb1b84 100644 --- a/app/src/components/layout/sidebarRight/properties/AisleProperties.tsx +++ b/app/src/components/layout/sidebarRight/properties/AisleProperties.tsx @@ -282,11 +282,11 @@ const AisleProperties: React.FC = () => {
)} diff --git a/app/src/components/ui/inputs/Search.tsx b/app/src/components/ui/inputs/Search.tsx index 73db02a..8310b26 100644 --- a/app/src/components/ui/inputs/Search.tsx +++ b/app/src/components/ui/inputs/Search.tsx @@ -5,12 +5,14 @@ interface SearchProps { value?: string | null; // The current value of the search input placeholder?: string; // Placeholder text for the input onChange: (value: string) => void; // Callback function to handle input changes + debounced?: boolean; // New prop: whether to debounce onChange } const Search: React.FC = ({ value = "", placeholder = "Search", onChange, + debounced = false, // Default false }) => { // State to track the input value and focus status const [inputValue, setInputValue] = useState(value); @@ -19,7 +21,10 @@ const Search: React.FC = ({ const handleInputChange = (event: ChangeEvent) => { const newValue = event.target.value; setInputValue(newValue); - onChange(newValue); // Call the onChange prop with the new value + + if (!debounced) { + onChange(newValue); // Immediate call if not debounced + } }; useEffect(() => { @@ -29,26 +34,36 @@ const Search: React.FC = ({ } }, [value]); + // Handle debounced effect + useEffect(() => { + if (!debounced) return; + + const timer = setTimeout(() => { + onChange(inputValue ?? ""); + }, 500); + + return () => clearTimeout(timer); + }, [inputValue, debounced, onChange]); + const handleClear = () => { - echo.warn("Search field cleared."); + console.warn("Search field cleared."); setInputValue(""); - onChange(""); // Clear the input value + onChange(""); // Clear immediately }; const handleFocus = () => { - setIsFocused(true); // Set focus state to true + setIsFocused(true); }; const handleBlur = () => { - setIsFocused(false); // Set focus state to false + setIsFocused(false); }; return (
@@ -76,4 +91,4 @@ const Search: React.FC = ({ ); }; -export default Search; +export default Search; \ No newline at end of file diff --git a/app/src/modules/builder/Decal/decalCreator/decalCreator.tsx b/app/src/modules/builder/Decal/decalCreator/decalCreator.tsx index 16721d3..705463b 100644 --- a/app/src/modules/builder/Decal/decalCreator/decalCreator.tsx +++ b/app/src/modules/builder/Decal/decalCreator/decalCreator.tsx @@ -9,8 +9,8 @@ import { useVersionContext } from '../../version/versionContext'; import { getUserData } from '../../../../functions/getUserData'; -// import { upsertWallApi } from '../../../../services/factoryBuilder/wall/upsertWallApi'; -// import { upsertFloorApi } from '../../../../services/factoryBuilder/floor/upsertFloorApi'; +import { upsertWallApi } from '../../../../services/factoryBuilder/wall/upsertWallApi'; +import { upsertFloorApi } from '../../../../services/factoryBuilder/floor/upsertFloorApi'; function DecalCreator() { const { wallStore, floorStore } = useSceneContext(); @@ -63,22 +63,25 @@ function DecalCreator() { setTimeout(() => { const updatedWall = getWallById(wallIntersect.object.userData.wallUuid); if (updatedWall) { - if (projectId && updatedWall) { - // API + if (projectId) { + if (!socket?.active) { + // API - // upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); + upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); + } else { - // SOCKET + // SOCKET - const data = { - wallData: updatedWall, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallData: updatedWall, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data); } - - socket.emit('v1:model-Wall:add', data); } } }, 0) @@ -107,21 +110,24 @@ function DecalCreator() { setTimeout(() => { const updatedFloor = getFloorById(floorIntersect.object.userData.floorUuid); if (projectId && updatedFloor) { - // API + if (!socket?.active) { + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); + upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); + } else { - // SOCKET + // SOCKET - const data = { - floorData: updatedFloor, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: updatedFloor, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); } }, 0) } diff --git a/app/src/modules/builder/Decal/eventHandler/useDecalEventHandlers.ts b/app/src/modules/builder/Decal/eventHandler/useDecalEventHandlers.ts index fc7e75d..93eed53 100644 --- a/app/src/modules/builder/Decal/eventHandler/useDecalEventHandlers.ts +++ b/app/src/modules/builder/Decal/eventHandler/useDecalEventHandlers.ts @@ -13,8 +13,8 @@ import { useSceneContext } from '../../../scene/sceneContext'; import { detectModifierKeys } from '../../../../utils/shortcutkeys/detectModifierKeys'; import handleDecalPositionSnap from '../functions/handleDecalPositionSnap'; -// import { upsertWallApi } from '../../../../services/factoryBuilder/wall/upsertWallApi'; -// import { upsertFloorApi } from '../../../../services/factoryBuilder/floor/upsertFloorApi'; +import { upsertWallApi } from '../../../../services/factoryBuilder/wall/upsertWallApi'; +import { upsertFloorApi } from '../../../../services/factoryBuilder/floor/upsertFloorApi'; export function useDecalEventHandlers({ parent, @@ -147,22 +147,25 @@ export function useDecalEventHandlers({ setTimeout(() => { const updatedWall = getWallById(parent.wallUuid); if (updatedWall) { - if (projectId && updatedWall) { - // API + if (projectId) { + if (!socket?.active) { + // API - // upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); + upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); + } else { - // SOCKET + // SOCKET - const data = { - wallData: updatedWall, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallData: updatedWall, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data); } - - socket.emit('v1:model-Wall:add', data); } } }, 0) @@ -171,21 +174,24 @@ export function useDecalEventHandlers({ const updatedFloor = parent; if (projectId && updatedFloor) { - // API + if (!socket?.active) { + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); + upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); + } else { - // SOCKET + // SOCKET - const data = { - floorData: updatedFloor, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: updatedFloor, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); } }, 0) } @@ -197,41 +203,47 @@ export function useDecalEventHandlers({ const updatedWall = removeDecalInWall(decalUuid); if (projectId && updatedWall) { - // API + if (!socket?.active) { + // API - // upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); + upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); + } else { - // SOCKET + // SOCKET - const data = { - wallData: updatedWall, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallData: updatedWall, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data); } - - socket.emit('v1:model-Wall:add', data); } } else if ('floorUuid' in parent) { const updatedFloor = removeDecalInFloor(decalUuid); if (projectId && updatedFloor) { - // API + if (!socket?.active) { + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); + upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); + } else { - // SOCKET + // SOCKET - const data = { - floorData: updatedFloor, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: updatedFloor, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); } } } diff --git a/app/src/modules/builder/aisle/aisleCreator/aisleCreator.tsx b/app/src/modules/builder/aisle/aisleCreator/aisleCreator.tsx index aea7cd2..d7a8d8a 100644 --- a/app/src/modules/builder/aisle/aisleCreator/aisleCreator.tsx +++ b/app/src/modules/builder/aisle/aisleCreator/aisleCreator.tsx @@ -10,7 +10,7 @@ import ReferenceAisle from './referenceAisle'; import ReferencePoint from '../../point/reference/referencePoint'; import { getUserData } from '../../../../functions/getUserData'; -// import { upsertAisleApi } from '../../../../services/factoryBuilder/aisle/upsertAisleApi'; +import { upsertAisleApi } from '../../../../services/factoryBuilder/aisle/upsertAisleApi'; function AisleCreator() { const { scene, camera, raycaster, gl, pointer } = useThree(); @@ -93,431 +93,70 @@ function AisleCreator() { } } - if (aisleType === 'solid-aisle') { + const aisleConfigs: Record any> = { + "solid-aisle": (color) => ({ aisleType: "solid-aisle", aisleColor: color, aisleWidth }), + "dashed-aisle": (color) => ({ aisleType: "dashed-aisle", aisleColor: color, aisleWidth, dashLength, gapLength }), + "dotted-aisle": (color) => ({ aisleType: "dotted-aisle", aisleColor: color, dotRadius, gapLength }), + "arrow-aisle": (color) => ({ aisleType: "arrow-aisle", aisleColor: color, aisleWidth }), + "arrows-aisle": (color) => ({ aisleType: "arrows-aisle", aisleColor: color, aisleWidth, aisleLength, gapLength }), + "arc-aisle": (color) => ({ aisleType: "arc-aisle", aisleColor: color, aisleWidth, isFlipped }), + "circle-aisle": (color) => ({ aisleType: "circle-aisle", aisleColor: color, aisleWidth }), + "junction-aisle": (color) => ({ aisleType: "junction-aisle", aisleColor: color, aisleWidth, isFlipped }) + }; + + if (!aisleType || !(aisleType in aisleConfigs)) return; + + if (tempPoints.length === 0) { + setTempPoints([newPoint]); + setIsCreating(true); + return; + } + + const aisle: Aisle = { + aisleUuid: THREE.MathUtils.generateUUID(), + points: [tempPoints[0], newPoint], + type: aisleConfigs[aisleType](aisleColor) + }; + + addAisle(aisle); + + push2D({ + type: "Draw", + actions: [{ + actionType: "Line-Create", + point: { type: "Aisle", lineData: aisle, timeStamp: new Date().toISOString() } + }] + }); + + addAilseToBackend(aisle); + + setTempPoints([newPoint]); + }; + + const addAilseToBackend = (aisle: Aisle) => { + if (projectId) { + if (!socket?.active) { + + // API + + upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '') - if (tempPoints.length === 0) { - setTempPoints([newPoint]); - setIsCreating(true); } else { - const aisle: Aisle = { - aisleUuid: THREE.MathUtils.generateUUID(), - points: [tempPoints[0], newPoint], - type: { - aisleType: 'solid-aisle', - aisleColor: aisleColor, - aisleWidth: aisleWidth - } - }; - addAisle(aisle); + // SOCKET - push2D({ - type: 'Draw', - actions: [ - { - actionType: 'Line-Create', - point: { - type: 'Aisle', - lineData: aisle, - timeStamp: new Date().toISOString(), - } - } - ], - }) - - if (projectId) { - - // API - - // upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '') - - // SOCKET - - socket.emit('v1:model-aisle:add', { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - aisleUuid: aisle.aisleUuid, - points: aisle.points, - type: aisle.type - }) - } - setTempPoints([newPoint]); - } - } else if (aisleType === 'dashed-aisle') { - - if (tempPoints.length === 0) { - setTempPoints([newPoint]); - setIsCreating(true); - } else { - const aisle: Aisle = { - aisleUuid: THREE.MathUtils.generateUUID(), - points: [tempPoints[0], newPoint], - type: { - aisleType: 'dashed-aisle', - aisleColor: aisleColor, - aisleWidth: aisleWidth, - dashLength: dashLength, - gapLength: gapLength - } - }; - - addAisle(aisle); - - push2D({ - type: 'Draw', - actions: [ - { - actionType: 'Line-Create', - point: { - type: 'Aisle', - lineData: aisle, - timeStamp: new Date().toISOString(), - } - } - ], - }) - - if (projectId) { - - // API - - // upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '') - - // SOCKET - - socket.emit('v1:model-aisle:add', { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - aisleUuid: aisle.aisleUuid, - points: aisle.points, - type: aisle.type - }) - } - setTempPoints([newPoint]); - } - } else if (aisleType === 'dotted-aisle') { - - if (tempPoints.length === 0) { - setTempPoints([newPoint]); - setIsCreating(true); - } else { - const aisle: Aisle = { - aisleUuid: THREE.MathUtils.generateUUID(), - points: [tempPoints[0], newPoint], - type: { - aisleType: 'dotted-aisle', - aisleColor: aisleColor, - dotRadius: dotRadius, - gapLength: gapLength - } - }; - - addAisle(aisle); - - push2D({ - type: 'Draw', - actions: [ - { - actionType: 'Line-Create', - point: { - type: 'Aisle', - lineData: aisle, - timeStamp: new Date().toISOString(), - } - } - ], - }) - - if (projectId) { - - // API - - // upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '') - - // SOCKET - - socket.emit('v1:model-aisle:add', { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - aisleUuid: aisle.aisleUuid, - points: aisle.points, - type: aisle.type - }) - } - setTempPoints([newPoint]); - } - } else if (aisleType === 'arrow-aisle') { - - if (tempPoints.length === 0) { - setTempPoints([newPoint]); - setIsCreating(true); - } else { - const aisle: Aisle = { - aisleUuid: THREE.MathUtils.generateUUID(), - points: [tempPoints[0], newPoint], - type: { - aisleType: 'arrow-aisle', - aisleColor: aisleColor, - aisleWidth: aisleWidth - } - }; - - addAisle(aisle); - - push2D({ - type: 'Draw', - actions: [ - { - actionType: 'Line-Create', - point: { - type: 'Aisle', - lineData: aisle, - timeStamp: new Date().toISOString(), - } - } - ], - }) - - if (projectId) { - - // API - - // upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '') - - // SOCKET - - socket.emit('v1:model-aisle:add', { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - aisleUuid: aisle.aisleUuid, - points: aisle.points, - type: aisle.type - }) - } - setTempPoints([newPoint]); - } - } else if (aisleType === 'arrows-aisle') { - - if (tempPoints.length === 0) { - setTempPoints([newPoint]); - setIsCreating(true); - } else { - const aisle: Aisle = { - aisleUuid: THREE.MathUtils.generateUUID(), - points: [tempPoints[0], newPoint], - type: { - aisleType: 'arrows-aisle', - aisleColor: aisleColor, - aisleWidth: aisleWidth, - aisleLength: aisleLength, - gapLength: gapLength - } - }; - - addAisle(aisle); - - push2D({ - type: 'Draw', - actions: [ - { - actionType: 'Line-Create', - point: { - type: 'Aisle', - lineData: aisle, - timeStamp: new Date().toISOString(), - } - } - ], - }) - - if (projectId) { - - // API - - // upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '') - - // SOCKET - - socket.emit('v1:model-aisle:add', { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - aisleUuid: aisle.aisleUuid, - points: aisle.points, - type: aisle.type - }) - } - setTempPoints([newPoint]); - } - } else if (aisleType === 'arc-aisle') { - - if (tempPoints.length === 0) { - setTempPoints([newPoint]); - setIsCreating(true); - } else { - const aisle: Aisle = { - aisleUuid: THREE.MathUtils.generateUUID(), - points: [tempPoints[0], newPoint], - type: { - aisleType: 'arc-aisle', - aisleColor: aisleColor, - aisleWidth: aisleWidth, - isFlipped: isFlipped - } - }; - - addAisle(aisle); - - push2D({ - type: 'Draw', - actions: [ - { - actionType: 'Line-Create', - point: { - type: 'Aisle', - lineData: aisle, - timeStamp: new Date().toISOString(), - } - } - ], - }) - - if (projectId) { - - // API - - // upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '') - - // SOCKET - - socket.emit('v1:model-aisle:add', { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - aisleUuid: aisle.aisleUuid, - points: aisle.points, - type: aisle.type - }) - } - setTempPoints([newPoint]); - } - } else if (aisleType === 'circle-aisle') { - - if (tempPoints.length === 0) { - setTempPoints([newPoint]); - setIsCreating(true); - } else { - const aisle: Aisle = { - aisleUuid: THREE.MathUtils.generateUUID(), - points: [tempPoints[0], newPoint], - type: { - aisleType: 'circle-aisle', - aisleColor: aisleColor, - aisleWidth: aisleWidth - } - }; - - addAisle(aisle); - - push2D({ - type: 'Draw', - actions: [ - { - actionType: 'Line-Create', - point: { - type: 'Aisle', - lineData: aisle, - timeStamp: new Date().toISOString(), - } - } - ], - }) - - if (projectId) { - - // API - - // upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '') - - // SOCKET - - socket.emit('v1:model-aisle:add', { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - aisleUuid: aisle.aisleUuid, - points: aisle.points, - type: aisle.type - }) - } - setTempPoints([newPoint]); - } - } else if (aisleType === 'junction-aisle') { - - if (tempPoints.length === 0) { - setTempPoints([newPoint]); - setIsCreating(true); - } else { - const aisle: Aisle = { - aisleUuid: THREE.MathUtils.generateUUID(), - points: [tempPoints[0], newPoint], - type: { - aisleType: 'junction-aisle', - aisleColor: aisleColor, - aisleWidth: aisleWidth, - isFlipped: isFlipped - } - }; - - addAisle(aisle); - - push2D({ - type: 'Draw', - actions: [ - { - actionType: 'Line-Create', - point: { - type: 'Aisle', - lineData: aisle, - timeStamp: new Date().toISOString(), - } - } - ], - }) - - if (projectId) { - - // API - - // upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '') - - // SOCKET - - socket.emit('v1:model-aisle:add', { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - aisleUuid: aisle.aisleUuid, - points: aisle.points, - type: aisle.type - }) - } - setTempPoints([newPoint]); + socket.emit("v1:model-aisle:add", { + projectId, + versionId: selectedVersion?.versionId || "", + userId, + organization, + aisleUuid: aisle.aisleUuid, + points: aisle.points, + type: aisle.type + }); } } - }; + } const onContext = (event: any) => { event.preventDefault(); diff --git a/app/src/modules/builder/asset/functions/addAssetModel.ts b/app/src/modules/builder/asset/functions/addAssetModel.ts index 3eac4a2..fbd519a 100644 --- a/app/src/modules/builder/asset/functions/addAssetModel.ts +++ b/app/src/modules/builder/asset/functions/addAssetModel.ts @@ -7,14 +7,14 @@ import * as CONSTANTS from "../../../../types/world/worldConstants"; import PointsCalculator from "../../../simulation/events/points/functions/pointsCalculator"; import { getUserData } from "../../../../functions/getUserData"; -// import { setAssetsApi } from '../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi'; +import { setAssetsApi } from '../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi'; async function addAssetModel( scene: THREE.Scene, raycaster: THREE.Raycaster, camera: THREE.Camera, pointer: THREE.Vector2, - socket: Socket, + socket: Socket | null, selectedItem: any, setSelectedItem: any, addEvent: (event: EventsSchema) => void, @@ -106,7 +106,7 @@ async function handleModelLoad( selectedItem: any, addEvent: (event: EventsSchema) => void, addAsset: (asset: Asset) => void, - socket: Socket, + socket: Socket | null, versionId: string, projectId?: string, userId?: string @@ -140,22 +140,6 @@ async function handleModelLoad( opacity: 1, }; - - // API - - // await setAssetsApi( - // organization, - // newFloorItem.modelUuid, - // newFloorItem.modelName, - // newFloorItem.assetId, - // newFloorItem.position, - // { x: 0, y: 0, z: 0 }, - // false, - // true, - // ); - - // SOCKET - if (selectedItem.type) { const data = PointsCalculator( selectedItem.type, @@ -449,14 +433,34 @@ async function handleModelLoad( rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, }, isLocked: false, isVisible: true, - socketId: socket.id, + socketId: socket?.id || '', eventData: eventData, versionId: versionId, projectId: projectId, userId: userId, }; - socket.emit("v1:model-asset:add", completeData); + if (!socket?.active) { + // API + + setAssetsApi({ + modelUuid: newFloorItem.modelUuid, + modelName: newFloorItem.modelName, + position: newFloorItem.position, + assetId: newFloorItem.assetId, + rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, }, + eventData: eventData, + isLocked: false, + isVisible: true, + versionId: versionId, + projectId: projectId, + }); + + } else { + // SOCKET + + socket.emit("v1:model-asset:add", completeData); + } const asset: Asset = { modelUuid: completeData.modelUuid, @@ -482,13 +486,32 @@ async function handleModelLoad( rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, }, isLocked: false, isVisible: true, - socketId: socket.id, + socketId: socket?.id || '', versionId: versionId, projectId: projectId, userId: userId, }; - socket.emit("v1:model-asset:add", data); + if (!socket?.active) { + // API + + setAssetsApi({ + modelUuid: newFloorItem.modelUuid, + modelName: newFloorItem.modelName, + position: newFloorItem.position, + assetId: newFloorItem.assetId, + rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, }, + isLocked: false, + isVisible: true, + versionId: versionId, + projectId: projectId, + }); + + } else { + // SOCKET + + socket.emit("v1:model-asset:add", data); + } const asset = { modelUuid: data.modelUuid, diff --git a/app/src/modules/builder/asset/models/model/eventHandlers/useEventHandlers.ts b/app/src/modules/builder/asset/models/model/eventHandlers/useEventHandlers.ts index edd9f4e..f6fbca3 100644 --- a/app/src/modules/builder/asset/models/model/eventHandlers/useEventHandlers.ts +++ b/app/src/modules/builder/asset/models/model/eventHandlers/useEventHandlers.ts @@ -16,7 +16,7 @@ import { useSelectedAsset } from '../../../../../../store/simulation/useSimulati import { useBuilderStore } from '../../../../../../store/builder/useBuilderStore'; import { upsertProductOrEventApi } from '../../../../../../services/simulation/products/UpsertProductOrEventApi'; -// import { deleteFloorItem } from '../../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi'; +import { deleteFloorItem } from '../../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi'; export function useModelEventHandlers({ boundingBox, @@ -146,24 +146,28 @@ export function useModelEventHandlers({ if (leftDrag.current || toggleView) return; if (activeTool === 'delete' && deletableFloorAsset && deletableFloorAsset.uuid === asset.modelUuid) { - //REST + if (!socket?.active) { - // const response = await deleteFloorItem(organization, asset.modelUuid, asset.modelName); + // REST - //SOCKET + deleteFloorItem(organization, asset.modelUuid, asset.modelName); - const data = { - organization, - modelUuid: asset.modelUuid, - modelName: asset.modelName, - socketId: socket.id, - userId, - versionId: selectedVersion?.versionId || '', - projectId + } else { + // SOCKET + + const data = { + organization, + modelUuid: asset.modelUuid, + modelName: asset.modelName, + socketId: socket.id, + userId, + versionId: selectedVersion?.versionId || '', + projectId + } + + socket.emit('v1:model-asset:delete', data) } - const response = socket.emit('v1:model-asset:delete', data) - removeEvent(asset.modelUuid); const updatedEvents = deleteEvent(asset.modelUuid); @@ -176,27 +180,24 @@ export function useModelEventHandlers({ ); }) - if (response) { + removeAsset(asset.modelUuid); - removeAsset(asset.modelUuid); - - push3D({ - type: 'Scene', - actions: [ - { - module: "builder", - actionType: "Asset-Delete", - asset: { - type: "Asset", - assetData: asset, - timeStap: new Date().toISOString() - } + push3D({ + type: 'Scene', + actions: [ + { + module: "builder", + actionType: "Asset-Delete", + asset: { + type: "Asset", + assetData: asset, + timeStap: new Date().toISOString() } - ] - }); + } + ] + }); - echo.success("Model Removed!"); - } + echo.success("Model Removed!"); } else if (activeModule === 'simulation' && subModule === "simulations" && activeTool === 'pen') { if (asset.eventData && asset.eventData.type === 'Conveyor') { diff --git a/app/src/modules/builder/dfx/LoadBlueprint.tsx b/app/src/modules/builder/dfx/LoadBlueprint.tsx index 216f2fe..52da573 100644 --- a/app/src/modules/builder/dfx/LoadBlueprint.tsx +++ b/app/src/modules/builder/dfx/LoadBlueprint.tsx @@ -9,6 +9,8 @@ import { useVersionContext } from '../version/versionContext'; import { useBuilderStore } from '../../../store/builder/useBuilderStore'; import { useSceneContext } from '../../scene/sceneContext'; +import { upsertWallApi } from '../../../services/factoryBuilder/wall/upsertWallApi'; + /** * DxfFile component handles the rendering and manipulation of DXf file data in a 3D scene. * It processes the DXF data to create points and lines representing walls and allows @@ -39,20 +41,25 @@ const DxfFile = () => { if (dfxWallGenerate) { dfxWallGenerate.map((wall: Wall) => { - const data = { - wallData: wall, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization - } - addWall(wall); - socket.emit('v1:model-Wall:add', data); - // API + if (projectId) { + if (!socket?.active) { + // API - // if (projectId) { - // upsertWallApi(projectId, selectedVersion?.versionId || '', wall); - // } + upsertWallApi(projectId, selectedVersion?.versionId || '', wall); + } else { + // SOCKET + + const data = { + wallData: wall, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + addWall(wall); + socket.emit('v1:model-Wall:add', data); + } + } }) } }, [dfxWallGenerate]); diff --git a/app/src/modules/builder/floor/floorCreator/floorCreator.tsx b/app/src/modules/builder/floor/floorCreator/floorCreator.tsx index 28450aa..76c5efb 100644 --- a/app/src/modules/builder/floor/floorCreator/floorCreator.tsx +++ b/app/src/modules/builder/floor/floorCreator/floorCreator.tsx @@ -10,7 +10,7 @@ import { getUserData } from '../../../../functions/getUserData'; import ReferencePoint from '../../point/reference/referencePoint'; import ReferenceFloor from './referenceFloor'; -// import { upsertFloorApi } from '../../../../services/factoryBuilder/floor/upsertFloorApi'; +import { upsertFloorApi } from '../../../../services/factoryBuilder/floor/upsertFloorApi'; function FloorCreator() { const { scene, camera, raycaster, gl, pointer } = useThree(); @@ -120,23 +120,25 @@ function FloorCreator() { }) if (projectId) { + if (!socket?.active) { - // API + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); + upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); + } else { - // SOCKET + // SOCKET - const data = { - floorData: floor, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: floor, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); - } setTempPoints([]); setIsCreating(false); @@ -174,23 +176,25 @@ function FloorCreator() { }) if (projectId) { + if (!socket?.active) { - // API + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); + upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); + } else { - // SOCKET + // SOCKET - const data = { - floorData: floor, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: floor, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); - } setTempPoints([]); setIsCreating(false); @@ -238,23 +242,25 @@ function FloorCreator() { }) if (projectId) { + if (!socket?.active) { - // API + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); + upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); + } else { - // SOCKET + // SOCKET - const data = { - floorData: floor, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: floor, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); - } } setTempPoints([]); diff --git a/app/src/modules/builder/line/line.tsx b/app/src/modules/builder/line/line.tsx index 462660e..132a572 100644 --- a/app/src/modules/builder/line/line.tsx +++ b/app/src/modules/builder/line/line.tsx @@ -13,14 +13,14 @@ import { handleCanvasCursors } from '../../../utils/mouseUtils/handleCanvasCurso import { useSelectedPoints } from '../../../store/simulation/useSimulationStore'; import { calculateAssetTransformationOnWall } from '../wallAsset/Instances/Instance/functions/calculateAssetTransformationOnWall'; -// import { upsertWallApi } from '../../../services/factoryBuilder/wall/upsertWallApi'; -// import { deleteWallApi } from '../../../services/factoryBuilder/wall/deleteWallApi'; -// import { upsertFloorApi } from '../../../services/factoryBuilder/floor/upsertFloorApi'; -// import { deleteFloorApi } from '../../../services/factoryBuilder/floor/deleteFloorApi'; -// import { deleteZoneApi } from '../../../services/factoryBuilder/zone/deleteZoneApi'; -// import { upsertZoneApi } from '../../../services/factoryBuilder/zone/upsertZoneApi'; -// import { upsertWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi'; -// import { deleteWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi'; +import { upsertWallApi } from '../../../services/factoryBuilder/wall/upsertWallApi'; +import { deleteWallApi } from '../../../services/factoryBuilder/wall/deleteWallApi'; +import { upsertFloorApi } from '../../../services/factoryBuilder/floor/upsertFloorApi'; +import { deleteFloorApi } from '../../../services/factoryBuilder/floor/deleteFloorApi'; +import { deleteZoneApi } from '../../../services/factoryBuilder/zone/deleteZoneApi'; +import { upsertZoneApi } from '../../../services/factoryBuilder/zone/upsertZoneApi'; +import { upsertWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi'; +import { deleteWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi'; interface LineProps { points: [Point, Point]; @@ -120,43 +120,48 @@ function Line({ points }: Readonly) { if (projectId && asset) { removeWallAsset(asset.modelUuid); + if (!socket?.active) { - // API + // API - // deleteWallAssetApi(projectId, selectedVersion?.versionId || '', asset.modelUuid, asset.wallUuid); + deleteWallAssetApi(projectId, selectedVersion?.versionId || '', asset.modelUuid, asset.wallUuid); + } else { - // SOCKET + // SOCKET - const data = { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - modelUuid: asset.modelUuid, - wallUuid: asset.wallUuid + const data = { + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization, + modelUuid: asset.modelUuid, + wallUuid: asset.wallUuid + } + + socket.emit('v1:wall-asset:delete', data); } - - socket.emit('v1:wall-asset:delete', data); - } }) + if (!socket?.active) { - // API + // API - // deleteWallApi(projectId, selectedVersion?.versionId || '', removedWall.wallUuid); + deleteWallApi(projectId, selectedVersion?.versionId || '', removedWall.wallUuid); + } else { - // SOCKET + // SOCKET - const data = { - wallUuid: removedWall.wallUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallUuid: removedWall.wallUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:delete', data); } - socket.emit('v1:model-Wall:delete', data); - push2D({ type: 'Draw', actions: [ @@ -180,22 +185,25 @@ function Line({ points }: Readonly) { if (removedFloors.length > 0) { removedFloors.forEach(floor => { if (projectId) { + if (!socket?.active) { - // API + // API - // deleteFloorApi(projectId, selectedVersion?.versionId || '', floor.floorUuid); + deleteFloorApi(projectId, selectedVersion?.versionId || '', floor.floorUuid); + } else { - // SOCKET + // SOCKET - const data = { - floorUuid: floor.floorUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorUuid: floor.floorUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:delete', data); } - - socket.emit('v1:model-Floor:delete', data); } }); @@ -218,22 +226,25 @@ function Line({ points }: Readonly) { if (updatedFloors.length > 0) { updatedFloors.forEach(floor => { if (projectId) { + if (!socket?.active) { - // API + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); + upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); + } else { - // SOCKET + // SOCKET - const data = { - floorData: floor, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: floor, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); } }); @@ -263,22 +274,25 @@ function Line({ points }: Readonly) { if (removedZones.length > 0) { removedZones.forEach(zone => { if (projectId) { + if (!socket?.active) { - // API + // API - // deleteZoneApi(projectId, selectedVersion?.versionId || '', zone.zoneUuid); + deleteZoneApi(projectId, selectedVersion?.versionId || '', zone.zoneUuid); + } else { - // SOCKET + // SOCKET - const data = { - zoneUuid: zone.zoneUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + zoneUuid: zone.zoneUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:zone:delete', data); } - - socket.emit('v1:zone:delete', data); } }); @@ -301,22 +315,25 @@ function Line({ points }: Readonly) { if (updatedZones.length > 0) { updatedZones.forEach(zone => { if (projectId) { + if (!socket?.active) { - // API + // API - // upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); + upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); + } else { - // SOCKET + // SOCKET - const data = { - zoneData: zone, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + zoneData: zone, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:zone:add', data); } - - socket.emit('v1:zone:add', data); } }); @@ -435,40 +452,47 @@ function Line({ points }: Readonly) { }); if (projectId && updatedWallAsset) { - // API + if (!socket?.active) { + // API - // upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset); + upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset); + } else { - // SOCKET + // SOCKET - const data = { - wallAssetData: updatedWallAsset, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallAssetData: updatedWallAsset, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:wall-asset:add', data); } - - socket.emit('v1:wall-asset:add', data); } }); } - // API + if (!socket?.active) { - // upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); + // API - // SOCKET + upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); + } else { - const data = { - wallData: updatedWall, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + // SOCKET + + const data = { + wallData: updatedWall, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data); } - - socket.emit('v1:model-Wall:add', data); }) if (initialPositions.walls && initialPositions.walls.length > 0) { @@ -495,22 +519,25 @@ function Line({ points }: Readonly) { if (updatedFloors.length > 0 && projectId) { updatedFloors.forEach(updatedFloor => { + if (!socket?.active) { - // API + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); + upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); + } else { - // SOCKET + // SOCKET - const data = { - floorData: updatedFloor, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: updatedFloor, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); }) if (initialPositions.floors && initialPositions.floors.length > 0) { @@ -537,22 +564,25 @@ function Line({ points }: Readonly) { if (updatedZones.length > 0 && projectId) { updatedZones.forEach(updatedZone => { + if (!socket?.active) { - // API + // API - // upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedZone); + upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedZone); + } else { - // SOCKET + // SOCKET - const data = { - zoneData: updatedZone, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + zoneData: updatedZone, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:zone:add', data); } - - socket.emit('v1:zone:add', data); }) if (initialPositions.zones && initialPositions.zones.length > 0) { diff --git a/app/src/modules/builder/point/point.tsx b/app/src/modules/builder/point/point.tsx index ac6b26a..ebf2aaa 100644 --- a/app/src/modules/builder/point/point.tsx +++ b/app/src/modules/builder/point/point.tsx @@ -11,16 +11,16 @@ import { useParams } from 'react-router-dom'; import { useVersionContext } from '../version/versionContext'; import { useSceneContext } from '../../scene/sceneContext'; -// import { upsertAisleApi } from '../../../services/factoryBuilder/aisle/upsertAisleApi'; -// import { deleteAisleApi } from '../../../services/factoryBuilder/aisle/deleteAisleApi'; -// import { upsertWallApi } from '../../../services/factoryBuilder/wall/upsertWallApi'; -// import { deleteWallApi } from '../../../services/factoryBuilder/wall/deleteWallApi'; -// import { upsertFloorApi } from '../../../services/factoryBuilder/floor/upsertFloorApi'; -// import { deleteFloorApi } from '../../../services/factoryBuilder/floor/deleteFloorApi'; -// import { upsertZoneApi } from '../../../services/factoryBuilder/zone/upsertZoneApi'; -// import { deleteZoneApi } from '../../../services/factoryBuilder/zone/deleteZoneApi'; -// import { upsertWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi'; -// import { deleteWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi'; +import { upsertAisleApi } from '../../../services/factoryBuilder/aisle/upsertAisleApi'; +import { deleteAisleApi } from '../../../services/factoryBuilder/aisle/deleteAisleApi'; +import { upsertWallApi } from '../../../services/factoryBuilder/wall/upsertWallApi'; +import { deleteWallApi } from '../../../services/factoryBuilder/wall/deleteWallApi'; +import { upsertFloorApi } from '../../../services/factoryBuilder/floor/upsertFloorApi'; +import { deleteFloorApi } from '../../../services/factoryBuilder/floor/deleteFloorApi'; +import { upsertZoneApi } from '../../../services/factoryBuilder/zone/upsertZoneApi'; +import { deleteZoneApi } from '../../../services/factoryBuilder/zone/deleteZoneApi'; +import { upsertWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi'; +import { deleteWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi'; import { getUserData } from '../../../functions/getUserData'; import { handleCanvasCursors } from '../../../utils/mouseUtils/handleCanvasCursors'; @@ -190,22 +190,25 @@ function Point({ point }: { readonly point: Point }) { const updatedAisles = getAislesByPointId(point.pointUuid); if (updatedAisles.length > 0 && projectId) { updatedAisles.forEach((updatedAisle) => { + if (!socket?.active) { - // API + // API - // upsertAisleApi(updatedAisle.aisleUuid, updatedAisle.points, updatedAisle.type, projectId, selectedVersion?.versionId || ''); + upsertAisleApi(updatedAisle.aisleUuid, updatedAisle.points, updatedAisle.type, projectId, selectedVersion?.versionId || ''); + } else { - // SOCKET + // SOCKET - socket.emit('v1:model-aisle:add', { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - aisleUuid: updatedAisle.aisleUuid, - points: updatedAisle.points, - type: updatedAisle.type - }) + socket.emit('v1:model-aisle:add', { + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization, + aisleUuid: updatedAisle.aisleUuid, + points: updatedAisle.points, + type: updatedAisle.type + }) + } }) if (initialStates.aisles && initialStates.aisles.length > 0) { @@ -244,40 +247,47 @@ function Point({ point }: { readonly point: Point }) { }); if (projectId && updatedWallAsset) { - // API + if (!socket?.active) { + // API - // upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset); + upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset); + } else { - // SOCKET + // SOCKET - const data = { - wallAssetData: updatedWallAsset, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallAssetData: updatedWallAsset, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:wall-asset:add', data); } - - socket.emit('v1:wall-asset:add', data); } }); } - // API + if (!socket?.active) { - // upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); + // API - // SOCKET + upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); + } else { - const data = { - wallData: updatedWall, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + // SOCKET + + const data = { + wallData: updatedWall, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data); } - - socket.emit('v1:model-Wall:add', data); }); } @@ -301,22 +311,25 @@ function Point({ point }: { readonly point: Point }) { const updatedFloors = getFloorsByPointId(point.pointUuid); if (updatedFloors && updatedFloors.length > 0 && projectId) { updatedFloors.forEach((updatedFloor) => { + if (!socket?.active) { - // API + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); + upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); + } else { - // SOCKET + // SOCKET - const data = { - floorData: updatedFloor, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: updatedFloor, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); }); } @@ -340,22 +353,25 @@ function Point({ point }: { readonly point: Point }) { const updatedZones = getZonesByPointId(point.pointUuid); if (updatedZones && updatedZones.length > 0 && projectId) { updatedZones.forEach((updatedZone) => { + if (!socket?.active) { - // API + // API - // upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedZone); + upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedZone); + } else { - // SOCKET + // SOCKET - const data = { - zoneData: updatedZone, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + zoneData: updatedZone, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:zone:add', data); } - - socket.emit('v1:zone:add', data); }); } @@ -388,23 +404,26 @@ function Point({ point }: { readonly point: Point }) { if (removedAisles.length > 0) { removedAisles.forEach(aisle => { if (projectId) { + if (!socket?.active) { - // API + // API - // deleteAisleApi(aisle.aisleUuid, projectId, selectedVersion?.versionId || ''); + deleteAisleApi(aisle.aisleUuid, projectId, selectedVersion?.versionId || ''); + } else { - // SOCKET + // SOCKET - const data = { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - aisleUuid: aisle.aisleUuid + const data = { + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization, + aisleUuid: aisle.aisleUuid + } + + socket.emit('v1:model-aisle:delete', data); } - socket.emit('v1:model-aisle:delete', data); - } }); @@ -436,44 +455,50 @@ function Point({ point }: { readonly point: Point }) { if (projectId && asset) { removeWallAsset(asset.modelUuid); + if (!socket?.active) { - // API + // API - // deleteWallAssetApi(projectId, selectedVersion?.versionId || '', asset.modelUuid, asset.wallUuid); + deleteWallAssetApi(projectId, selectedVersion?.versionId || '', asset.modelUuid, asset.wallUuid); + } else { - // SOCKET + // SOCKET - const data = { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - modelUuid: asset.modelUuid, - wallUuid: asset.wallUuid + const data = { + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization, + modelUuid: asset.modelUuid, + wallUuid: asset.wallUuid + } + + socket.emit('v1:wall-asset:delete', data); } - socket.emit('v1:wall-asset:delete', data); - } }) if (projectId) { + if (!socket?.active) { - // API + // API - // deleteWallApi(projectId, selectedVersion?.versionId || '', wall.wallUuid); + deleteWallApi(projectId, selectedVersion?.versionId || '', wall.wallUuid); + } else { - // SOCKET + // SOCKET - const data = { - wallUuid: wall.wallUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallUuid: wall.wallUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:delete', data); } - - socket.emit('v1:model-Wall:delete', data); } }); @@ -501,22 +526,25 @@ function Point({ point }: { readonly point: Point }) { if (removedFloors.length > 0) { removedFloors.forEach(floor => { if (projectId) { + if (!socket?.active) { - // API + // API - // deleteFloorApi(projectId, selectedVersion?.versionId || '', floor.floorUuid); + deleteFloorApi(projectId, selectedVersion?.versionId || '', floor.floorUuid); + } else { - // SOCKET + // SOCKET - const data = { - floorUuid: floor.floorUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorUuid: floor.floorUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:delete', data); } - - socket.emit('v1:model-Floor:delete', data); } }); @@ -539,22 +567,25 @@ function Point({ point }: { readonly point: Point }) { if (updatedFloors.length > 0) { updatedFloors.forEach(floor => { if (projectId) { + if (!socket?.active) { - // API + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); + upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); + } else { - // SOCKET + // SOCKET - const data = { - floorData: floor, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: floor, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); } }); @@ -583,22 +614,25 @@ function Point({ point }: { readonly point: Point }) { if (removedZones.length > 0) { removedZones.forEach(zone => { if (projectId) { + if (!socket?.active) { - // API + // API - // deleteZoneApi(projectId, selectedVersion?.versionId || '', zone.zoneUuid); + deleteZoneApi(projectId, selectedVersion?.versionId || '', zone.zoneUuid); + } else { - // SOCKET + // SOCKET - const data = { - zoneUuid: zone.zoneUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + zoneUuid: zone.zoneUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:zone:delete', data); } - - socket.emit('v1:zone:delete', data); } }); @@ -621,22 +655,25 @@ function Point({ point }: { readonly point: Point }) { if (updatedZones.length > 0) { updatedZones.forEach(zone => { if (projectId) { + if (!socket?.active) { - // API + // API - // upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); + upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); + } else { - // SOCKET + // SOCKET - const data = { - zoneData: zone, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + zoneData: zone, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:zone:add', data); } - - socket.emit('v1:zone:add', data); } }); diff --git a/app/src/modules/builder/wall/wallCreator/wallCreator.tsx b/app/src/modules/builder/wall/wallCreator/wallCreator.tsx index 52d5d7e..02c7f0b 100644 --- a/app/src/modules/builder/wall/wallCreator/wallCreator.tsx +++ b/app/src/modules/builder/wall/wallCreator/wallCreator.tsx @@ -12,8 +12,8 @@ import getClosestIntersection from '../../line/helpers/getClosestIntersection'; import ReferencePoint from '../../point/reference/referencePoint'; import ReferenceWall from './referenceWall'; -// import { upsertWallApi } from '../../../../services/factoryBuilder/wall/upsertWallApi'; -// import { deleteWallApi } from '../../../../services/factoryBuilder/wall/deleteWallApi'; +import { upsertWallApi } from '../../../../services/factoryBuilder/wall/upsertWallApi'; +import { deleteWallApi } from '../../../../services/factoryBuilder/wall/deleteWallApi'; function WallCreator() { const { scene, camera, raycaster, gl, pointer } = useThree(); @@ -94,23 +94,26 @@ function WallCreator() { removeWall(wall.wallUuid); if (projectId) { + if (!socket?.active) { - // API + // API - // deleteWallApi(projectId, selectedVersion?.versionId || '', wall.wallUuid); + deleteWallApi(projectId, selectedVersion?.versionId || '', wall.wallUuid); + } else { - // SOCKET + // SOCKET - const data = { - wallUuid: wall.wallUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallUuid: wall.wallUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:delete', data); } - socket.emit('v1:model-Wall:delete', data); - } const point1: Point = { @@ -147,24 +150,27 @@ function WallCreator() { addWall(wall2); - // API + if (projectId) { + if (!socket?.active) { + // API - // if (projectId) { - // upsertWallApi(projectId, selectedVersion?.versionId || '', wall2); - // } + upsertWallApi(projectId, selectedVersion?.versionId || '', wall2); + } else { - // SOCKET + // SOCKET - const data = { - wallData: wall2, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallData: wall2, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data); + } } - socket.emit('v1:model-Wall:add', data); - const wall3: Wall = { wallUuid: THREE.MathUtils.generateUUID(), points: [point2, newPoint], @@ -204,24 +210,27 @@ function WallCreator() { ], }) - // API + if (projectId) { + if (!socket?.active) { + // API - // if (projectId) { - // upsertWallApi(projectId, selectedVersion?.versionId || '', wall3); - // } + upsertWallApi(projectId, selectedVersion?.versionId || '', wall3); + } else { - // SOCKET + // SOCKET - const data2 = { - wallData: wall3, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data2 = { + wallData: wall3, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data2); + } } - socket.emit('v1:model-Wall:add', data2); - setTempPoints([newPoint]); setIsCreating(true); } else { @@ -237,24 +246,27 @@ function WallCreator() { addWall(wall1); - // API + if (projectId) { + if (!socket?.active) { + // API - // if (projectId) { - // upsertWallApi(projectId, selectedVersion?.versionId || '', wall1); - // } + upsertWallApi(projectId, selectedVersion?.versionId || '', wall1); + } else { - // SOCKET + // SOCKET - const data = { - wallData: wall1, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallData: wall1, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data); + } } - socket.emit('v1:model-Wall:add', data); - const wall2: Wall = { wallUuid: THREE.MathUtils.generateUUID(), points: [point1, newPoint], @@ -267,24 +279,27 @@ function WallCreator() { addWall(wall2); - // API + if (projectId) { + if (!socket?.active) { + // API - // if (projectId) { - // upsertWallApi(projectId, selectedVersion?.versionId || '', wall2); - // } + upsertWallApi(projectId, selectedVersion?.versionId || '', wall2); + } else { - // SOCKET + // SOCKET - const data1 = { - wallData: wall2, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data1 = { + wallData: wall2, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data1); + } } - socket.emit('v1:model-Wall:add', data1); - const wall3: Wall = { wallUuid: THREE.MathUtils.generateUUID(), points: [point2, newPoint], @@ -328,24 +343,27 @@ function WallCreator() { ], }) - // API + if (projectId) { + if (!socket?.active) { + // API - // if (projectId) { - // upsertWallApi(projectId, selectedVersion?.versionId || '', wall3); - // } + upsertWallApi(projectId, selectedVersion?.versionId || '', wall3); + } else { - // SOCKET + // SOCKET - const data3 = { - wallData: wall3, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data3 = { + wallData: wall3, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data3); + } } - socket.emit('v1:model-Wall:add', data3); - setTempPoints([newPoint]); } @@ -411,24 +429,27 @@ function WallCreator() { ], }) - // API + if (projectId) { + if (!socket?.active) { + // API - // if (projectId) { - // upsertWallApi(projectId, selectedVersion?.versionId || '', wall); - // } + upsertWallApi(projectId, selectedVersion?.versionId || '', wall); + } else { - // SOCKET + // SOCKET - const data = { - wallData: wall, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallData: wall, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data); + } } - socket.emit('v1:model-Wall:add', data); - setTempPoints([newPoint]); } diff --git a/app/src/modules/builder/wallAsset/Instances/Instance/wallAssetInstance.tsx b/app/src/modules/builder/wallAsset/Instances/Instance/wallAssetInstance.tsx index 3919f65..2f5a9f8 100644 --- a/app/src/modules/builder/wallAsset/Instances/Instance/wallAssetInstance.tsx +++ b/app/src/modules/builder/wallAsset/Instances/Instance/wallAssetInstance.tsx @@ -14,8 +14,8 @@ import { useVersionContext } from '../../../version/versionContext'; import { getUserData } from '../../../../../functions/getUserData'; import closestPointOnLineSegment from '../../../line/helpers/getClosestPointOnLineSegment'; -// import { upsertWallAssetApi } from '../../../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi'; -// import { deleteWallAssetApi } from '../../../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi'; +import { upsertWallAssetApi } from '../../../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi'; +import { deleteWallAssetApi } from '../../../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi'; function WallAssetInstance({ wallAsset }: { wallAsset: WallAsset }) { const url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`; @@ -126,23 +126,25 @@ function WallAssetInstance({ wallAsset }: { wallAsset: WallAsset }) { const updatedWallAsset = getWallAssetById(wallAsset.modelUuid); if (projectId && updatedWallAsset) { + if (!socket?.active) { - // API + // API - // upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset); + upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset); + } else { - // SOCKET + // SOCKET - const data = { - wallAssetData: updatedWallAsset, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallAssetData: updatedWallAsset, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:wall-asset:add', data); } - - socket.emit('v1:wall-asset:add', data); - } } } @@ -194,24 +196,26 @@ function WallAssetInstance({ wallAsset }: { wallAsset: WallAsset }) { const removedWallAsset = removeWallAsset(wallAsset.modelUuid); if (projectId && removedWallAsset) { + if (!socket?.active) { - // API + // API - // deleteWallAssetApi(projectId, selectedVersion?.versionId || '', removedWallAsset.modelUuid, removedWallAsset.wallUuid); + deleteWallAssetApi(projectId, selectedVersion?.versionId || '', removedWallAsset.modelUuid, removedWallAsset.wallUuid); + } else { - // SOCKET + // SOCKET - const data = { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - modelUuid: removedWallAsset.modelUuid, - wallUuid: removedWallAsset.wallUuid + const data = { + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization, + modelUuid: removedWallAsset.modelUuid, + wallUuid: removedWallAsset.wallUuid + } + + socket.emit('v1:wall-asset:delete', data); } - - socket.emit('v1:wall-asset:delete', data); - } } }, [activeTool, activeModule, deletableWallAsset, socket]) diff --git a/app/src/modules/builder/wallAsset/wallAssetCreator.tsx b/app/src/modules/builder/wallAsset/wallAssetCreator.tsx index 13438c2..bfbeb63 100644 --- a/app/src/modules/builder/wallAsset/wallAssetCreator.tsx +++ b/app/src/modules/builder/wallAsset/wallAssetCreator.tsx @@ -9,7 +9,7 @@ import { useVersionContext } from '../version/versionContext'; import { getUserData } from '../../../functions/getUserData'; import closestPointOnLineSegment from '../line/helpers/getClosestPointOnLineSegment'; -// import { upsertWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi'; +import { upsertWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi'; function WallAssetCreator() { const { socket } = useSocketStore(); @@ -62,23 +62,25 @@ function WallAssetCreator() { addWallAsset(newWallAsset); if (projectId) { + if (!socket?.active) { - // API + // API - // upsertWallAssetApi(projectId, selectedVersion?.versionId || '', newWallAsset); + upsertWallAssetApi(projectId, selectedVersion?.versionId || '', newWallAsset); + } else { - // SOCKET + // SOCKET - const data = { - wallAssetData: newWallAsset, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallAssetData: newWallAsset, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:wall-asset:add', data); } - - socket.emit('v1:wall-asset:add', data); - } } } diff --git a/app/src/modules/builder/zone/zoneCreator/zoneCreator.tsx b/app/src/modules/builder/zone/zoneCreator/zoneCreator.tsx index bed501f..85ce279 100644 --- a/app/src/modules/builder/zone/zoneCreator/zoneCreator.tsx +++ b/app/src/modules/builder/zone/zoneCreator/zoneCreator.tsx @@ -10,7 +10,7 @@ import { getUserData } from '../../../../functions/getUserData'; import ReferencePoint from '../../point/reference/referencePoint'; import ReferenceZone from './referenceZone'; -// import { upsertZoneApi } from '../../../../services/factoryBuilder/zone/upsertZoneApi'; +import { upsertZoneApi } from '../../../../services/factoryBuilder/zone/upsertZoneApi'; function ZoneCreator() { const { scene, camera, raycaster, gl, pointer } = useThree(); @@ -33,7 +33,6 @@ function ZoneCreator() { const [isCreating, setIsCreating] = useState(false); const { zoneColor, zoneHeight, snappedPosition, snappedPoint, setSnappedPoint, setSnappedPosition } = useBuilderStore(); - useEffect(() => { const canvasElement = gl.domElement; @@ -119,23 +118,25 @@ function ZoneCreator() { }) if (projectId) { + if (!socket?.active) { - // API + // API - // upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); + upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); + } else { - // SOCKET + // SOCKET - const data = { - zoneData: zone, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + zoneData: zone, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:zone:add', data); } - - socket.emit('v1:zone:add', data); - } setTempPoints([]); setIsCreating(false); @@ -171,23 +172,25 @@ function ZoneCreator() { }) if (projectId) { + if (!socket?.active) { - // API + // API - // upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); + upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); + } else { - // SOCKET + // SOCKET - const data = { - zoneData: zone, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + zoneData: zone, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:zone:add', data); } - - socket.emit('v1:zone:add', data); - } setTempPoints([]); setIsCreating(false); @@ -233,23 +236,25 @@ function ZoneCreator() { }) if (projectId) { + if (!socket?.active) { - // API + // API - // upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); + upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); + } else { - // SOCKET + // SOCKET - const data = { - zoneData: zone, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + zoneData: zone, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:zone:add', data); } - - socket.emit('v1:zone:add', data); - } } setTempPoints([]); diff --git a/app/src/modules/collaboration/socket/socketResponses.dev.tsx b/app/src/modules/collaboration/socket/socketResponses.dev.tsx index f2ab238..5ac1e79 100644 --- a/app/src/modules/collaboration/socket/socketResponses.dev.tsx +++ b/app/src/modules/collaboration/socket/socketResponses.dev.tsx @@ -5,12 +5,16 @@ export default function SocketResponses() { const { socket } = useSocketStore(); useEffect(() => { - socket.on("v1:model-asset:response:add", (data: any) => { - // console.log('data: ', data); - }); + if (socket) { + socket.on("v1:model-asset:response:add", (data: any) => { + // console.log('data: ', data); + }); + } return () => { - socket.off("v1:model-asset:response:add"); + if (socket) { + socket.off("v1:model-asset:response:add"); + } } }, [socket]) diff --git a/app/src/modules/scene/controls/controls.tsx b/app/src/modules/scene/controls/controls.tsx index a3c9638..984cfa8 100644 --- a/app/src/modules/scene/controls/controls.tsx +++ b/app/src/modules/scene/controls/controls.tsx @@ -48,7 +48,7 @@ export default function Controls() { }, []); useEffect(() => { - if (resetCamera) { + if (resetCamera && socket) { controlsRef.current?.setPosition(...CONSTANTS.threeDimension.defaultPosition); controlsRef.current?.setTarget(...CONSTANTS.threeDimension.defaultTarget); controlsRef.current?.rotateAzimuthTo(CONSTANTS.threeDimension.defaultAzimuth); @@ -75,7 +75,7 @@ export default function Controls() { let intervalId: NodeJS.Timeout | null = null; const handleRest = () => { - if (hasInteracted && controlsRef.current && state.camera.position && !toggleView) { + if (hasInteracted && controlsRef.current && state.camera.position && !toggleView && socket) { const position = state.camera.position; if (position.x === 0 && position.y === 0 && position.z === 0) return; updateCamPosition(controlsRef, socket, position, state.camera.rotation, projectId); diff --git a/app/src/modules/scene/controls/selectionControls/selection2D/moveControls2D.tsx b/app/src/modules/scene/controls/selectionControls/selection2D/moveControls2D.tsx index 6c10141..a072d5e 100644 --- a/app/src/modules/scene/controls/selectionControls/selection2D/moveControls2D.tsx +++ b/app/src/modules/scene/controls/selectionControls/selection2D/moveControls2D.tsx @@ -11,10 +11,11 @@ import { useSelectedPoints } from "../../../../../store/simulation/useSimulation import useModuleStore from "../../../../../store/useModuleStore"; import { calculateAssetTransformationOnWall } from "../../../../builder/wallAsset/Instances/Instance/functions/calculateAssetTransformationOnWall"; -// import { upsertAisleApi } from "../../../../../services/factoryBuilder/aisle/upsertAisleApi"; -// import { upsertWallApi } from "../../../../../services/factoryBuilder/wall/upsertWallApi"; -// import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi"; -// import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi"; +import { upsertAisleApi } from "../../../../../services/factoryBuilder/aisle/upsertAisleApi"; +import { upsertWallApi } from "../../../../../services/factoryBuilder/wall/upsertWallApi"; +import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi"; +import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi"; +import { upsertWallAssetApi } from "../../../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi"; function MoveControls2D({ movedObjects, @@ -270,21 +271,24 @@ function MoveControls2D({ if (updatedAisles.length > 0 && projectId) { updatedAisles.forEach((updatedAisle) => { - // API + if (!socket?.active) { + // API - // upsertAisleApi(updatedAisle.aisleUuid, updatedAisle.points, updatedAisle.type, projectId, selectedVersion?.versionId || ''); + upsertAisleApi(updatedAisle.aisleUuid, updatedAisle.points, updatedAisle.type, projectId, selectedVersion?.versionId || ''); + } else { - // SOCKET + // SOCKET - socket.emit('v1:model-aisle:add', { - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization, - aisleUuid: updatedAisle.aisleUuid, - points: updatedAisle.points, - type: updatedAisle.type - }); + socket.emit('v1:model-aisle:add', { + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization, + aisleUuid: updatedAisle.aisleUuid, + points: updatedAisle.points, + type: updatedAisle.type + }); + } const old = initialStates[movedObject.uuid]; if (old) { @@ -330,19 +334,22 @@ function MoveControls2D({ }); } - // API + if (!socket?.active) { + // API - // upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); + upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); + } else { - // SOCKET + // SOCKET - socket.emit('v1:model-Wall:add', { - wallData: updatedWall, - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization - }); + socket.emit('v1:model-Wall:add', { + wallData: updatedWall, + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization + }); + } const old = initialStates[movedObject.uuid]; if (old) { @@ -371,19 +378,22 @@ function MoveControls2D({ if (updatedFloors?.length && projectId) { updatedFloors.forEach(updatedFloor => { - // API + if (!socket?.active) { + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); + upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); + } else { - // SOCKET + // SOCKET - socket.emit('v1:model-Floor:add', { - floorData: updatedFloor, - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization - }); + socket.emit('v1:model-Floor:add', { + floorData: updatedFloor, + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization + }); + } const updatedFloorsData = updatedFloors.map((floor) => { const originalFloor = Floors.find(f => f.floorUuid === floor.floorUuid) || floor; @@ -410,19 +420,22 @@ function MoveControls2D({ if (updatedZones?.length && projectId) { updatedZones.forEach(updatedZone => { - // API + if (!socket?.active) { + // API - // upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedZone); + upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedZone); + } else { - // SOCKET + // SOCKET - socket.emit('v1:zone:add', { - zoneData: updatedZone, - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization - }); + socket.emit('v1:zone:add', { + zoneData: updatedZone, + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization + }); + } const updatedZonesData = updatedZones.map((zone) => { const originalZone = Zones.find(z => z.zoneUuid === zone.zoneUuid) || zone; @@ -459,21 +472,24 @@ function MoveControls2D({ rotation: updatedWallAsset.rotation }); - // API + if (!socket?.active) { + // API - // upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset); + upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset); + } else { - // SOCKET + // SOCKET - const data = { - wallAssetData: updatedWallAsset, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallAssetData: updatedWallAsset, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:wall-asset:add', data); } - - socket.emit('v1:wall-asset:add', data); } }); } diff --git a/app/src/modules/scene/controls/selectionControls/selection2D/selectionControls2D.tsx b/app/src/modules/scene/controls/selectionControls/selection2D/selectionControls2D.tsx index a12196d..a01e1fb 100644 --- a/app/src/modules/scene/controls/selectionControls/selection2D/selectionControls2D.tsx +++ b/app/src/modules/scene/controls/selectionControls/selection2D/selectionControls2D.tsx @@ -14,12 +14,13 @@ import { useSelectedPoints } from "../../../../../store/simulation/useSimulation import { useBuilderStore } from "../../../../../store/builder/useBuilderStore"; import MoveControls2D from "./moveControls2D"; -// import { deleteAisleApi } from "../../../../../services/factoryBuilder/aisle/deleteAisleApi"; -// import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi"; -// import { deleteFloorApi } from "../../../../../services/factoryBuilder/floor/deleteFloorApi"; -// import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi"; -// import { deleteZoneApi } from "../../../../../services/factoryBuilder/zone/deleteZoneApi"; -// import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi"; +import { deleteAisleApi } from "../../../../../services/factoryBuilder/aisle/deleteAisleApi"; +import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi"; +import { deleteFloorApi } from "../../../../../services/factoryBuilder/floor/deleteFloorApi"; +import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi"; +import { deleteZoneApi } from "../../../../../services/factoryBuilder/zone/deleteZoneApi"; +import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi"; +import { deleteWallAssetApi } from "../../../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi"; const SelectionControls2D: React.FC = () => { const { camera, controls, gl, scene, pointer } = useThree(); @@ -240,22 +241,25 @@ const SelectionControls2D: React.FC = () => { if (removedAisles.length > 0) { removedAisles.forEach(aisle => { if (projectId) { + if (!socket?.active) { - // API + // API - // deleteAisleApi(aisle.aisleUuid, projectId, selectedVersion?.versionId || ''); + deleteAisleApi(aisle.aisleUuid, projectId, selectedVersion?.versionId || ''); + } else { - // SOCKET + // SOCKET - const data = { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - aisleUuid: aisle.aisleUuid + const data = { + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization, + aisleUuid: aisle.aisleUuid + } + + socket.emit('v1:model-aisle:delete', data); } - - socket.emit('v1:model-aisle:delete', data); } }); @@ -280,43 +284,49 @@ const SelectionControls2D: React.FC = () => { removeWallAsset(asset.modelUuid); - // API + if (!socket?.active) { - // deleteWallAssetApi(projectId, selectedVersion?.versionId || '', asset.modelUuid, asset.wallUuid); + // API - // SOCKET + deleteWallAssetApi(projectId, selectedVersion?.versionId || '', asset.modelUuid, asset.wallUuid); + } else { - const data = { - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization, - modelUuid: asset.modelUuid, - wallUuid: asset.wallUuid + // SOCKET + + const data = { + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization, + modelUuid: asset.modelUuid, + wallUuid: asset.wallUuid + } + + socket.emit('v1:wall-asset:delete', data); } - - socket.emit('v1:wall-asset:delete', data); - } }) if (projectId) { + if (!socket?.active) { - // API + // API - // deleteWallApi(projectId, selectedVersion?.versionId || '', wall.wallUuid); + deleteWallApi(projectId, selectedVersion?.versionId || '', wall.wallUuid); + } else { - // SOCKET + // SOCKET - const data = { - wallUuid: wall.wallUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallUuid: wall.wallUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:delete', data); } - - socket.emit('v1:model-Wall:delete', data); } }); @@ -335,22 +345,25 @@ const SelectionControls2D: React.FC = () => { if (removedFloors.length > 0) { removedFloors.forEach(floor => { if (projectId) { + if (!socket?.active) { - // API + // API - // deleteFloorApi(projectId, selectedVersion?.versionId || '', floor.floorUuid); + deleteFloorApi(projectId, selectedVersion?.versionId || '', floor.floorUuid); + } else { - // SOCKET + // SOCKET - const data = { - floorUuid: floor.floorUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorUuid: floor.floorUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:delete', data); } - - socket.emit('v1:model-Floor:delete', data); } }); @@ -365,22 +378,25 @@ const SelectionControls2D: React.FC = () => { if (updatedFloors.length > 0) { updatedFloors.forEach(floor => { if (projectId) { + if (!socket?.active) { - // API + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); + upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); + } else { - // SOCKET + // SOCKET - const data = { - floorData: floor, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: floor, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); } }); @@ -400,22 +416,25 @@ const SelectionControls2D: React.FC = () => { if (removedZones.length > 0) { removedZones.forEach(zone => { if (projectId) { + if (!socket?.active) { - // API + // API - // deleteZoneApi(projectId, selectedVersion?.versionId || '', zone.zoneUuid); + deleteZoneApi(projectId, selectedVersion?.versionId || '', zone.zoneUuid); + } else { - // SOCKET + // SOCKET - const data = { - zoneUuid: zone.zoneUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + zoneUuid: zone.zoneUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:zone:delete', data); } - - socket.emit('v1:zone:delete', data); } }); @@ -430,22 +449,25 @@ const SelectionControls2D: React.FC = () => { if (updatedZones.length > 0) { updatedZones.forEach(zone => { if (projectId) { + if (!socket?.active) { - // API + // API - // upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); + upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); + } else { - // SOCKET + // SOCKET - const data = { - zoneData: zone, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + zoneData: zone, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:zone:add', data); } - - socket.emit('v1:zone:add', data); } }); diff --git a/app/src/modules/scene/controls/selectionControls/selection3D/copyPasteControls3D.tsx b/app/src/modules/scene/controls/selectionControls/selection3D/copyPasteControls3D.tsx index a905dbc..01130fa 100644 --- a/app/src/modules/scene/controls/selectionControls/selection3D/copyPasteControls3D.tsx +++ b/app/src/modules/scene/controls/selectionControls/selection3D/copyPasteControls3D.tsx @@ -10,7 +10,7 @@ import { getUserData } from "../../../../../functions/getUserData"; import { useSceneContext } from "../../../sceneContext"; import { useVersionContext } from "../../../../builder/version/versionContext"; -// import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; +import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; const CopyPasteControls3D = () => { const { camera, controls, gl, scene, pointer, raycaster } = useThree(); @@ -481,20 +481,34 @@ const CopyPasteControls3D = () => { rotation: { x: pastedAsset.rotation.x, y: pastedAsset.rotation.y, z: pastedAsset.rotation.z }, isLocked: false, isVisible: true, - socketId: socket.id, + socketId: socket?.id, eventData: eventData, versionId: selectedVersion?.versionId || '', userId, projectId }; - //REST + if (!socket?.active) { + // REST - // await setAssetsApi(data); + setAssetsApi({ + modelUuid: newFloorItem.modelUuid, + modelName: newFloorItem.modelName, + assetId: newFloorItem.assetId, + position: [position.x, 0, position.z], + rotation: { x: pastedAsset.rotation.x, y: pastedAsset.rotation.y, z: pastedAsset.rotation.z }, + isLocked: false, + isVisible: true, + eventData: eventData, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { - //SOCKET + // SOCKET - socket.emit("v1:model-asset:add", data); + socket.emit("v1:model-asset:add", data); + } const asset: Asset = { modelUuid: data.modelUuid, @@ -520,13 +534,32 @@ const CopyPasteControls3D = () => { rotation: { x: pastedAsset.rotation.x, y: pastedAsset.rotation.y, z: pastedAsset.rotation.z }, isLocked: false, isVisible: true, - socketId: socket.id, + socketId: socket?.id, versionId: selectedVersion?.versionId || '', projectId, userId }; - socket.emit("v1:model-asset:add", data); + if (!socket?.active) { + // REST + + setAssetsApi({ + modelUuid: newFloorItem.modelUuid, + modelName: newFloorItem.modelName, + assetId: newFloorItem.assetId, + position: [position.x, 0, position.z], + rotation: { x: pastedAsset.rotation.x, y: pastedAsset.rotation.y, z: pastedAsset.rotation.z }, + isLocked: false, + isVisible: true, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { + + // SOCKET + + socket.emit("v1:model-asset:add", data); + } const asset: Asset = { modelUuid: data.modelUuid, diff --git a/app/src/modules/scene/controls/selectionControls/selection3D/duplicationControls3D.tsx b/app/src/modules/scene/controls/selectionControls/selection3D/duplicationControls3D.tsx index 38a1622..ca37153 100644 --- a/app/src/modules/scene/controls/selectionControls/selection3D/duplicationControls3D.tsx +++ b/app/src/modules/scene/controls/selectionControls/selection3D/duplicationControls3D.tsx @@ -11,7 +11,7 @@ import { useSceneContext } from "../../../sceneContext"; import { useVersionContext } from "../../../../builder/version/versionContext"; import { handleAssetPositionSnap } from "./functions/handleAssetPositionSnap"; -// import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; +import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; const DuplicationControls3D = () => { const { camera, controls, gl, scene, pointer, raycaster } = useThree(); @@ -550,20 +550,34 @@ const DuplicationControls3D = () => { rotation: { x: duplicatedAsset.rotation.x, y: duplicatedAsset.rotation.y, z: duplicatedAsset.rotation.z }, isLocked: false, isVisible: true, - socketId: socket.id, + socketId: socket?.id, eventData: eventData, versionId: selectedVersion?.versionId || '', userId, projectId }; - //REST + if (!socket?.active) { + // REST - // await setAssetsApi(data); + setAssetsApi({ + modelUuid: newFloorItem.modelUuid, + modelName: newFloorItem.modelName, + assetId: newFloorItem.assetId, + position: [position.x, position.y, position.z], + rotation: { x: duplicatedAsset.rotation.x, y: duplicatedAsset.rotation.y, z: duplicatedAsset.rotation.z }, + isLocked: false, + isVisible: true, + eventData: eventData, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { - //SOCKET + // SOCKET - socket.emit("v1:model-asset:add", data); + socket.emit("v1:model-asset:add", data); + } const asset: Asset = { modelUuid: data.modelUuid, @@ -589,14 +603,32 @@ const DuplicationControls3D = () => { rotation: { x: duplicatedAsset.rotation.x, y: duplicatedAsset.rotation.y, z: duplicatedAsset.rotation.z }, isLocked: false, isVisible: true, - socketId: socket.id, + socketId: socket?.id, versionId: selectedVersion?.versionId || '', projectId, userId }; - socket.emit("v1:model-asset:add", data); + if (!socket?.active) { + // REST + setAssetsApi({ + modelUuid: newFloorItem.modelUuid, + modelName: newFloorItem.modelName, + assetId: newFloorItem.assetId, + position: [position.x, position.y, position.z], + rotation: { x: duplicatedAsset.rotation.x, y: duplicatedAsset.rotation.y, z: duplicatedAsset.rotation.z }, + isLocked: false, + isVisible: true, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { + + // SOCKET + + socket.emit("v1:model-asset:add", data); + } const asset: Asset = { modelUuid: data.modelUuid, modelName: data.modelName, diff --git a/app/src/modules/scene/controls/selectionControls/selection3D/moveControls3D.tsx b/app/src/modules/scene/controls/selectionControls/selection3D/moveControls3D.tsx index 3d58d46..a142de5 100644 --- a/app/src/modules/scene/controls/selectionControls/selection3D/moveControls3D.tsx +++ b/app/src/modules/scene/controls/selectionControls/selection3D/moveControls3D.tsx @@ -14,7 +14,7 @@ import { useSceneContext } from "../../../sceneContext"; import { useVersionContext } from "../../../../builder/version/versionContext"; import useModuleStore from "../../../../../store/useModuleStore"; -// import { setAssetsApi } from '../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi'; +import { setAssetsApi } from '../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi'; function MoveControls3D({ boundingBoxRef }: any) { const { camera, controls, gl, scene, pointer, raycaster } = useThree(); @@ -420,19 +420,32 @@ function MoveControls3D({ boundingBoxRef }: any) { rotation: { x: movedAsset.rotation.x, y: movedAsset.rotation.y, z: movedAsset.rotation.z }, isLocked: false, isVisible: true, - socketId: socket.id, + socketId: socket?.id, versionId: selectedVersion?.versionId || '', projectId, userId }; - //REST + if (!socket?.active) { + // REST - // await setAssetsApi(data); + setAssetsApi({ + modelUuid: newFloorItem.modelUuid, + modelName: newFloorItem.modelName, + assetId: newFloorItem.assetId, + position: newFloorItem.position, + rotation: { x: movedAsset.rotation.x, y: movedAsset.rotation.y, z: movedAsset.rotation.z }, + isLocked: false, + isVisible: true, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { - //SOCKET + // SOCKET - socket.emit("v1:model-asset:add", data); + socket.emit("v1:model-asset:add", data); + } } }); diff --git a/app/src/modules/scene/controls/selectionControls/selection3D/rotateControls3D.tsx b/app/src/modules/scene/controls/selectionControls/selection3D/rotateControls3D.tsx index cbedd62..a9b54f3 100644 --- a/app/src/modules/scene/controls/selectionControls/selection3D/rotateControls3D.tsx +++ b/app/src/modules/scene/controls/selectionControls/selection3D/rotateControls3D.tsx @@ -13,7 +13,7 @@ import { detectModifierKeys } from "../../../../../utils/shortcutkeys/detectModi import { handleAssetRotationSnap } from "./functions/handleAssetRotationSnap"; import useModuleStore from "../../../../../store/useModuleStore"; -// import { setAssetsApi } from '../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi'; +import { setAssetsApi } from '../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi'; function RotateControls3D() { const { camera, gl, scene, pointer, raycaster } = useThree(); @@ -364,19 +364,32 @@ function RotateControls3D() { rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z }, isLocked: false, isVisible: true, - socketId: socket.id, + socketId: socket?.id, versionId: selectedVersion?.versionId || '', projectId, userId }; - //REST + if (!socket?.active) { + // REST - // await setAssetsApi(data); + setAssetsApi({ + modelUuid: newFloorItem.modelUuid, + modelName: newFloorItem.modelName, + assetId: newFloorItem.assetId, + position: newFloorItem.position, + rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z }, + isLocked: false, + isVisible: true, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { - //SOCKET + // SOCKET - socket.emit("v1:model-asset:add", data); + socket.emit("v1:model-asset:add", data); + } } }); diff --git a/app/src/modules/scene/controls/selectionControls/selection3D/selectionControls3D.tsx b/app/src/modules/scene/controls/selectionControls/selection3D/selectionControls3D.tsx index 014f766..4884acd 100644 --- a/app/src/modules/scene/controls/selectionControls/selection3D/selectionControls3D.tsx +++ b/app/src/modules/scene/controls/selectionControls/selection3D/selectionControls3D.tsx @@ -19,7 +19,7 @@ import RotateControls3D from "./rotateControls3D"; import TransformControls3D from "./transformControls3D"; import { useBuilderStore } from "../../../../../store/builder/useBuilderStore"; -// import { deleteFloorItem } from '../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi'; +import { deleteFloorItem } from '../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi'; const SelectionControls3D: React.FC = () => { const { camera, controls, gl, scene, raycaster, pointer } = useThree(); @@ -284,23 +284,28 @@ const SelectionControls3D: React.FC = () => { const asset = getAssetById(selectedMesh.userData.modelUuid); if (!asset) return; - //REST - // const response = deleteFloorItem(organization, selectedMesh.userData.modelUuid, selectedMesh.userData.modelName); + if (!socket?.active) { - //SOCKET + // REST - const data = { - organization, - modelUuid: selectedMesh.userData.modelUuid, - modelName: selectedMesh.userData.modelName, - socketId: socket.id, - projectId, - versionId: selectedVersion?.versionId || '', - userId - }; + deleteFloorItem(organization, selectedMesh.userData.modelUuid, selectedMesh.userData.modelName); + } else { - const response = socket.emit("v1:model-asset:delete", data); + // SOCKET + + const data = { + organization, + modelUuid: selectedMesh.userData.modelUuid, + modelName: selectedMesh.userData.modelName, + socketId: socket.id, + projectId, + versionId: selectedVersion?.versionId || '', + userId + }; + + socket.emit("v1:model-asset:delete", data); + } eventStore.getState().removeEvent(selectedMesh.uuid); const updatedEvents = productStore.getState().deleteEvent(selectedMesh.uuid); @@ -314,12 +319,9 @@ const SelectionControls3D: React.FC = () => { ); }) - if (response) { + removeAsset(selectedMesh.uuid); - removeAsset(selectedMesh.uuid); - - echo.success("Model Removed!"); - } + echo.success("Model Removed!"); selectedMesh.traverse((child: THREE.Object3D) => { if (child instanceof THREE.Mesh) { diff --git a/app/src/modules/scene/controls/selectionControls/selection3D/transformControls3D.tsx b/app/src/modules/scene/controls/selectionControls/selection3D/transformControls3D.tsx index 5ff4476..05a883e 100644 --- a/app/src/modules/scene/controls/selectionControls/selection3D/transformControls3D.tsx +++ b/app/src/modules/scene/controls/selectionControls/selection3D/transformControls3D.tsx @@ -11,7 +11,7 @@ import { useParams } from 'react-router-dom'; import { getUserData } from '../../../../../functions/getUserData'; import { upsertProductOrEventApi } from '../../../../../services/simulation/products/UpsertProductOrEventApi'; import { detectModifierKeys } from '../../../../../utils/shortcutkeys/detectModifierKeys'; -// import { setAssetsApi } from '../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi'; +import { setAssetsApi } from '../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi'; function TransformControls3D() { const { toolMode } = useToolMode(); @@ -135,37 +135,42 @@ function TransformControls3D() { } } - //REST - // setAssetsApi( - // organization, - // asset.modelUuid, - // asset.modelName, - // [obj.position.x, 0, obj.position.z], - // { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z }, - // asset.assetId, - // false, - // true, - // ); + if (!socket?.active) { + // API - //SOCKET + setAssetsApi({ + modelUuid: asset.modelUuid, + modelName: asset.modelName, + assetId: asset.assetId, + position: [obj.position.x, obj.position.y, obj.position.z], + rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z }, + isLocked: false, + isVisible: true, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { - const data = { - organization, - modelUuid: asset.modelUuid, - modelName: asset.modelName, - assetId: asset.assetId, - position: [obj.position.x, obj.position.y, obj.position.z], - rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z }, - isLocked: false, - isVisible: true, - socketId: socket.id, - versionId: selectedVersion?.versionId || '', - userId, - projectId - }; + // SOCKET - socket.emit("v1:model-asset:add", data); + const data = { + organization, + modelUuid: asset.modelUuid, + modelName: asset.modelName, + assetId: asset.assetId, + position: [obj.position.x, obj.position.y, obj.position.z], + rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z }, + isLocked: false, + isVisible: true, + socketId: socket.id, + versionId: selectedVersion?.versionId || '', + userId, + projectId + }; + + socket.emit("v1:model-asset:add", data); + } }); }, [selectedAssets, setSelectedAssets, getAssetById, updateAsset, eventStore, productStore, selectedProduct, updateBackend, projectId, organization, socket, selectedVersion, userId, push3D]); diff --git a/app/src/modules/scene/controls/transformControls/transformControls.tsx b/app/src/modules/scene/controls/transformControls/transformControls.tsx index 61f264e..7661bda 100644 --- a/app/src/modules/scene/controls/transformControls/transformControls.tsx +++ b/app/src/modules/scene/controls/transformControls/transformControls.tsx @@ -12,7 +12,7 @@ import { useBuilderStore } from "../../../../store/builder/useBuilderStore"; import { detectModifierKeys } from "../../../../utils/shortcutkeys/detectModifierKeys"; import { upsertProductOrEventApi } from "../../../../services/simulation/products/UpsertProductOrEventApi"; -// import { setAssetsApi } from "../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; +import { setAssetsApi } from "../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; export default function TransformControl() { const state = useThree(); @@ -110,37 +110,42 @@ export default function TransformControl() { rotation: [selectedFloorAsset.rotation.x, selectedFloorAsset.rotation.y, selectedFloorAsset.rotation.z] as [number, number, number], }); - //REST + if (!socket?.active) { - // await setAssetsApi( - // organization, - // asset.modelUuid, - // asset.modelName, - // [selectedFloorAsset.position.x, 0, selectedFloorAsset.position.z, - // { "x": selectedFloorAsset.rotation.x, "y": selectedFloorAsset.rotation.y, "z": selectedFloorAsset.rotation.z }, - // asset.assetId, - // false, - // true, - // ); + // API - //SOCKET + setAssetsApi({ + modelUuid: asset.modelUuid, + modelName: asset.modelName, + assetId: asset.assetId, + position: [selectedFloorAsset.position.x, 0, selectedFloorAsset.position.z] as [number, number, number], + rotation: { x: selectedFloorAsset.rotation.x, y: selectedFloorAsset.rotation.y, z: selectedFloorAsset.rotation.z }, + isLocked: false, + isVisible: true, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { - const data = { - organization, - modelUuid: asset.modelUuid, - modelName: asset.modelName, - assetId: asset.assetId, - position: [selectedFloorAsset.position.x, 0, selectedFloorAsset.position.z] as [number, number, number], - rotation: { x: selectedFloorAsset.rotation.x, y: selectedFloorAsset.rotation.y, z: selectedFloorAsset.rotation.z }, - isLocked: false, - isVisible: true, - socketId: socket.id, - versionId: selectedVersion?.versionId || '', - userId, - projectId - }; + // SOCKET - socket.emit("v1:model-asset:add", data); + const data = { + organization, + modelUuid: asset.modelUuid, + modelName: asset.modelName, + assetId: asset.assetId, + position: [selectedFloorAsset.position.x, 0, selectedFloorAsset.position.z] as [number, number, number], + rotation: { x: selectedFloorAsset.rotation.x, y: selectedFloorAsset.rotation.y, z: selectedFloorAsset.rotation.z }, + isLocked: false, + isVisible: true, + socketId: socket.id, + versionId: selectedVersion?.versionId || '', + userId, + projectId + }; + + socket.emit("v1:model-asset:add", data); + } push3D({ type: 'Scene', diff --git a/app/src/modules/scene/controls/undoRedoControls/handlers/use2DRedoHandler.ts b/app/src/modules/scene/controls/undoRedoControls/handlers/use2DRedoHandler.ts index 12a0929..cdfa8a9 100644 --- a/app/src/modules/scene/controls/undoRedoControls/handlers/use2DRedoHandler.ts +++ b/app/src/modules/scene/controls/undoRedoControls/handlers/use2DRedoHandler.ts @@ -4,17 +4,17 @@ import { useVersionContext } from "../../../../builder/version/versionContext"; import { useSceneContext } from "../../../sceneContext"; import { useSocketStore } from "../../../../../store/builder/store"; -// import { upsertWallApi } from "../../../../../services/factoryBuilder/wall/upsertWallApi"; -// import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi"; +import { upsertWallApi } from "../../../../../services/factoryBuilder/wall/upsertWallApi"; +import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi"; -// import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi"; -// import { deleteZoneApi } from "../../../../../services/factoryBuilder/zone/deleteZoneApi"; +import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi"; +import { deleteZoneApi } from "../../../../../services/factoryBuilder/zone/deleteZoneApi"; -// import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi"; -// import { deleteFloorApi } from "../../../../../services/factoryBuilder/floor/deleteFloorApi"; +import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi"; +import { deleteFloorApi } from "../../../../../services/factoryBuilder/floor/deleteFloorApi"; -// import { upsertAisleApi } from "../../../../../services/factoryBuilder/aisle/upsertAisleApi"; -// import { deleteAisleApi } from "../../../../../services/factoryBuilder/aisle/deleteAisleApi"; +import { upsertAisleApi } from "../../../../../services/factoryBuilder/aisle/upsertAisleApi"; +import { deleteAisleApi } from "../../../../../services/factoryBuilder/aisle/deleteAisleApi"; function use2DRedoHandler() { const { undoRedo2DStore, wallStore, floorStore, zoneStore, aisleStore } = useSceneContext(); @@ -100,252 +100,288 @@ function use2DRedoHandler() { const createWallFromBackend = (wallData: Wall) => { addWall(wallData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertWallApi(projectId, selectedVersion?.versionId || '', wallData); + upsertWallApi(projectId, selectedVersion?.versionId || '', wallData); + } else { - // SOCKET + // SOCKET - const data = { - wallData: wallData, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallData: wallData, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data); } - - socket.emit('v1:model-Wall:add', data); } }; const removeWallFromBackend = (wallUuid: string) => { removeWall(wallUuid); if (projectId) { - // API + if (!socket?.active) { + // API - // deleteWallApi(projectId, selectedVersion?.versionId || '', wallUuid); + deleteWallApi(projectId, selectedVersion?.versionId || '', wallUuid); + } else { - // SOCKET + // SOCKET - const data = { - wallUuid: wallUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallUuid: wallUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:delete', data); } - - socket.emit('v1:model-Wall:delete', data); } }; const updateWallFromBackend = (wallUuid: string, updatedData: Wall) => { updateWall(wallUuid, updatedData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertWallApi(projectId, selectedVersion?.versionId || '', updatedData); + upsertWallApi(projectId, selectedVersion?.versionId || '', updatedData); + } else { - // SOCKET + // SOCKET - const data = { - wallData: updatedData, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallData: updatedData, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data); } - - socket.emit('v1:model-Wall:add', data); } }; const createFloorFromBackend = (floorData: Floor) => { addFloor(floorData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', floorData); + upsertFloorApi(projectId, selectedVersion?.versionId || '', floorData); + } else { - // SOCKET + // SOCKET - const data = { - floorData: floorData, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: floorData, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); } }; const removeFloorFromBackend = (floorUuid: string) => { removeFloor(floorUuid); if (projectId) { - // API + if (!socket?.active) { + // API - // deleteFloorApi(projectId, selectedVersion?.versionId || '', floorUuid); + deleteFloorApi(projectId, selectedVersion?.versionId || '', floorUuid); + } else { - // SOCKET + // SOCKET - const data = { - floorUuid: floorUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorUuid: floorUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:delete', data); } - - socket.emit('v1:model-Floor:delete', data); } }; const updateFloorFromBackend = (floorUuid: string, updatedData: Floor) => { updateFloor(floorUuid, updatedData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedData); + upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedData); + } else { - // SOCKET + // SOCKET - const data = { - floorData: updatedData, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: updatedData, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); } }; const createZoneFromBackend = (zoneData: Zone) => { addZone(zoneData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertZoneApi(projectId, selectedVersion?.versionId || '', zoneData); + upsertZoneApi(projectId, selectedVersion?.versionId || '', zoneData); + } else { - // SOCKET + // SOCKET - const data = { - zoneData: zoneData, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + zoneData: zoneData, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:zone:add', data); } - - socket.emit('v1:zone:add', data); } }; const removeZoneFromBackend = (zoneUuid: string) => { removeZone(zoneUuid); if (projectId) { - // API + if (!socket?.active) { + // API - // deleteZoneApi(projectId, selectedVersion?.versionId || '', zoneUuid); + deleteZoneApi(projectId, selectedVersion?.versionId || '', zoneUuid); + } else { - // SOCKET + // SOCKET - const data = { - zoneUuid, - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization - }; + const data = { + zoneUuid, + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization + }; - socket.emit('v1:zone:delete', data); + socket.emit('v1:zone:delete', data); + } } }; const updateZoneFromBackend = (zoneUuid: string, updatedData: Zone) => { updateZone(zoneUuid, updatedData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedData); + upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedData); + } else { - // SOCKET + // SOCKET - const data = { - zoneData: updatedData, - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization - }; + const data = { + zoneData: updatedData, + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization + }; - socket.emit('v1:zone:add', data); + socket.emit('v1:zone:add', data); + } } }; const createAisleFromBackend = (aisleData: Aisle) => { addAisle(aisleData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertAisleApi(projectId, selectedVersion?.versionId || '', aisleData); + upsertAisleApi(aisleData.aisleUuid, aisleData.points, aisleData.type, projectId, selectedVersion?.versionId || ''); + } else { - // SOCKET + // SOCKET - const data = { - ...aisleData, - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization - }; + const data = { + ...aisleData, + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization + }; - socket.emit('v1:model-aisle:add', data); + socket.emit('v1:model-aisle:add', data); + } } }; const removeAisleFromBackend = (aisleUuid: string) => { removeAisle(aisleUuid); if (projectId) { - // API + if (!socket?.active) { + // API - // deleteAisleApi(projectId, selectedVersion?.versionId || '', aisleUuid); + deleteAisleApi(projectId, selectedVersion?.versionId || '', aisleUuid); + } else { - // SOCKET + // SOCKET - const data = { - aisleUuid, - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization - }; + const data = { + aisleUuid, + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization + }; - socket.emit('v1:model-aisle:delete', data); + socket.emit('v1:model-aisle:delete', data); + } } }; const updateAisleFromBackend = (aisleUuid: string, updatedData: Aisle) => { updateAisle(aisleUuid, updatedData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertAisleApi(projectId, selectedVersion?.versionId || '', updatedData); + upsertAisleApi(updatedData.aisleUuid, updatedData.points, updatedData.type, projectId, selectedVersion?.versionId || ''); + } else { - // SOCKET + // SOCKET - const data = { - ...updatedData, - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization - }; + const data = { + ...updatedData, + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization + }; - socket.emit('v1:model-aisle:add', data); + socket.emit('v1:model-aisle:add', data); + } } }; diff --git a/app/src/modules/scene/controls/undoRedoControls/handlers/use2DUndoHandler.ts b/app/src/modules/scene/controls/undoRedoControls/handlers/use2DUndoHandler.ts index 9f7ff60..16fb689 100644 --- a/app/src/modules/scene/controls/undoRedoControls/handlers/use2DUndoHandler.ts +++ b/app/src/modules/scene/controls/undoRedoControls/handlers/use2DUndoHandler.ts @@ -4,17 +4,17 @@ import { useVersionContext } from "../../../../builder/version/versionContext"; import { useSceneContext } from "../../../sceneContext"; import { useSocketStore } from "../../../../../store/builder/store"; -// import { upsertWallApi } from "../../../../../services/factoryBuilder/wall/upsertWallApi"; -// import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi"; +import { upsertWallApi } from "../../../../../services/factoryBuilder/wall/upsertWallApi"; +import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi"; -// import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi"; -// import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi"; +import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi"; +import { deleteZoneApi } from "../../../../../services/factoryBuilder/zone/deleteZoneApi"; -// import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi"; -// import { deleteFloorApi } from "../../../../../services/factoryBuilder/floor/deleteFloorApi"; +import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi"; +import { deleteFloorApi } from "../../../../../services/factoryBuilder/floor/deleteFloorApi"; -// import { upsertAisleApi } from "../../../../../services/factoryBuilder/aisle/upsertAisleApi"; -// import { deleteAisleApi } from "../../../../../services/factoryBuilder/aisle/deleteAisleApi"; +import { upsertAisleApi } from "../../../../../services/factoryBuilder/aisle/upsertAisleApi"; +import { deleteAisleApi } from "../../../../../services/factoryBuilder/aisle/deleteAisleApi"; function use2DUndoHandler() { const { undoRedo2DStore, wallStore, floorStore, zoneStore, aisleStore } = useSceneContext(); @@ -100,252 +100,288 @@ function use2DUndoHandler() { const createWallToBackend = (wallData: Wall) => { addWall(wallData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertWallApi(projectId, selectedVersion?.versionId || '', wallData); + upsertWallApi(projectId, selectedVersion?.versionId || '', wallData); + } else { - // SOCKET + // SOCKET - const data = { - wallData: wallData, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallData: wallData, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data); } - - socket.emit('v1:model-Wall:add', data); } }; const removeWallToBackend = (wallUuid: string) => { removeWall(wallUuid); if (projectId) { - // API + if (!socket?.active) { + // API - // deleteWallApi(projectId, selectedVersion?.versionId || '', wallUuid); + deleteWallApi(projectId, selectedVersion?.versionId || '', wallUuid); + } else { - // SOCKET + // SOCKET - const data = { - wallUuid: wallUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallUuid: wallUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:delete', data); } - - socket.emit('v1:model-Wall:delete', data); } }; const updateWallToBackend = (wallUuid: string, updatedData: Wall) => { updateWall(wallUuid, updatedData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertWallApi(projectId, selectedVersion?.versionId || '', updatedData); + upsertWallApi(projectId, selectedVersion?.versionId || '', updatedData); + } else { - // SOCKET + // SOCKET - const data = { - wallData: updatedData, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + wallData: updatedData, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Wall:add', data); } - - socket.emit('v1:model-Wall:add', data); } }; const createFloorToBackend = (floorData: Floor) => { addFloor(floorData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', floorData); + upsertFloorApi(projectId, selectedVersion?.versionId || '', floorData); + } else { - // SOCKET + // SOCKET - const data = { - floorData: floorData, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: floorData, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); } }; const removeFloorToBackend = (floorUuid: string) => { removeFloor(floorUuid); if (projectId) { - // API + if (!socket?.active) { + // API - // deleteFloorApi(projectId, selectedVersion?.versionId || '', floorUuid); + deleteFloorApi(projectId, selectedVersion?.versionId || '', floorUuid); + } else { - // SOCKET + // SOCKET - const data = { - floorUuid: floorUuid, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorUuid: floorUuid, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:delete', data); } - - socket.emit('v1:model-Floor:delete', data); } }; const updateFloorToBackend = (floorUuid: string, updatedData: Floor) => { updateFloor(floorUuid, updatedData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedData); + upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedData); + } else { - // SOCKET + // SOCKET - const data = { - floorData: updatedData, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + floorData: updatedData, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:model-Floor:add', data); } - - socket.emit('v1:model-Floor:add', data); } }; const createZoneToBackend = (zoneData: Zone) => { addZone(zoneData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertZoneApi(projectId, selectedVersion?.versionId || '', zoneData); + upsertZoneApi(projectId, selectedVersion?.versionId || '', zoneData); + } else { - // SOCKET + // SOCKET - const data = { - zoneData: zoneData, - projectId: projectId, - versionId: selectedVersion?.versionId || '', - userId: userId, - organization: organization + const data = { + zoneData: zoneData, + projectId: projectId, + versionId: selectedVersion?.versionId || '', + userId: userId, + organization: organization + } + + socket.emit('v1:zone:add', data); } - - socket.emit('v1:zone:add', data); } }; const removeZoneToBackend = (zoneUuid: string) => { removeZone(zoneUuid); if (projectId) { - // API + if (!socket?.active) { + // API - // deleteZoneApi(projectId, selectedVersion?.versionId || '', zoneUuid); + deleteZoneApi(projectId, selectedVersion?.versionId || '', zoneUuid); + } else { - // SOCKET + // SOCKET - const data = { - zoneUuid, - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization - }; + const data = { + zoneUuid, + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization + }; - socket.emit('v1:zone:delete', data); + socket.emit('v1:zone:delete', data); + } } }; const updateZoneToBackend = (zoneUuid: string, updatedData: Zone) => { updateZone(zoneUuid, updatedData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedData); + upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedData); + } else { - // SOCKET + // SOCKET - const data = { - zoneData: updatedData, - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization - }; + const data = { + zoneData: updatedData, + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization + }; - socket.emit('v1:zone:add', data); + socket.emit('v1:zone:add', data); + } } }; const createAisleToBackend = (aisleData: Aisle) => { addAisle(aisleData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertAisleApi(projectId, selectedVersion?.versionId || '', aisleData); + upsertAisleApi(aisleData.aisleUuid, aisleData.points, aisleData.type, projectId, selectedVersion?.versionId || ''); + } else { - // SOCKET + // SOCKET - const data = { - ...aisleData, - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization - }; + const data = { + ...aisleData, + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization + }; - socket.emit('v1:model-aisle:add', data); + socket.emit('v1:model-aisle:add', data); + } } }; const removeAisleToBackend = (aisleUuid: string) => { removeAisle(aisleUuid); if (projectId) { - // API + if (!socket?.active) { + // API - // deleteAisleApi(projectId, selectedVersion?.versionId || '', aisleUuid); + deleteAisleApi(projectId, selectedVersion?.versionId || '', aisleUuid); + } else { - // SOCKET + // SOCKET - const data = { - aisleUuid, - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization - }; + const data = { + aisleUuid, + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization + }; - socket.emit('v1:model-aisle:delete', data); + socket.emit('v1:model-aisle:delete', data); + } } }; const updateAisleToBackend = (aisleUuid: string, updatedData: Aisle) => { updateAisle(aisleUuid, updatedData); if (projectId) { - // API + if (!socket?.active) { + // API - // upsertAisleApi(projectId, selectedVersion?.versionId || '', updatedData); + upsertAisleApi(updatedData.aisleUuid, updatedData.points, updatedData.type, projectId, selectedVersion?.versionId || ''); + } else { - // SOCKET + // SOCKET - const data = { - ...updatedData, - projectId, - versionId: selectedVersion?.versionId || '', - userId, - organization - }; + const data = { + ...updatedData, + projectId, + versionId: selectedVersion?.versionId || '', + userId, + organization + }; - socket.emit('v1:model-aisle:add', data); + socket.emit('v1:model-aisle:add', data); + } } }; diff --git a/app/src/modules/scene/controls/undoRedoControls/handlers/use3DRedoHandler.ts b/app/src/modules/scene/controls/undoRedoControls/handlers/use3DRedoHandler.ts index b44f6a7..4ddf62e 100644 --- a/app/src/modules/scene/controls/undoRedoControls/handlers/use3DRedoHandler.ts +++ b/app/src/modules/scene/controls/undoRedoControls/handlers/use3DRedoHandler.ts @@ -7,8 +7,8 @@ import { useSocketStore } from "../../../../../store/builder/store"; import { upsertProductOrEventApi } from "../../../../../services/simulation/products/UpsertProductOrEventApi"; -// import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; -// import { deleteFloorItem } from "../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi"; +import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; +import { deleteFloorItem } from "../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi"; function use3DRedoHandler() { const { undoRedo3DStore, assetStore, productStore, eventStore } = useSceneContext(); @@ -138,7 +138,7 @@ function use3DRedoHandler() { isLocked: false, isVisible: true, eventData: {}, - socketId: socket.id, + socketId: socket?.id, versionId: selectedVersion?.versionId || '', projectId, userId @@ -149,35 +149,52 @@ function use3DRedoHandler() { addEvent(assetData.eventData as EventsSchema); } - // API + if (!socket?.active) { + // REST - // setAssetsApi(data); + setAssetsApi({ + modelUuid: assetData.modelUuid, + modelName: assetData.modelName, + assetId: assetData.assetId, + position: assetData.position, + rotation: { x: assetData.rotation[0], y: assetData.rotation[1], z: assetData.rotation[2] }, + isLocked: false, + isVisible: true, + eventData: data.eventData, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { - //SOCKET + // SOCKET - socket.emit("v1:model-asset:add", data); + socket.emit("v1:model-asset:add", data); + } } } const deleteAssetToBackend = (assetData: Asset) => { - //REST + if (!socket?.active) { + // REST - // const response = deleteFloorItem(organization, assetData.modelUuid, assetData.modelName); + deleteFloorItem(organization, assetData.modelUuid, assetData.modelName); + } else { - //SOCKET + // SOCKET - const data = { - organization, - modelUuid: assetData.modelUuid, - modelName: assetData.modelName, - socketId: socket.id, - userId, - versionId: selectedVersion?.versionId || '', - projectId + const data = { + organization, + modelUuid: assetData.modelUuid, + modelName: assetData.modelName, + socketId: socket.id, + userId, + versionId: selectedVersion?.versionId || '', + projectId + } + + socket.emit('v1:model-asset:delete', data) } - const response = socket.emit('v1:model-asset:delete', data) - removeEvent(assetData.modelUuid); const updatedEvents = deleteEvent(assetData.modelUuid); @@ -190,10 +207,7 @@ function use3DRedoHandler() { ); }) - if (response) { - - removeAsset(assetData.modelUuid); - } + removeAsset(assetData.modelUuid); } const updateAssetToBackend = (modelUuid: string, updatedData: Asset) => { @@ -208,19 +222,32 @@ function use3DRedoHandler() { rotation: { x: updatedData.rotation[0], y: updatedData.rotation[1], z: updatedData.rotation[2] }, isLocked: false, isVisible: true, - socketId: socket.id, + socketId: socket?.id, versionId: selectedVersion?.versionId || '', projectId, userId }; - // API + if (!socket?.active) { + // REST - // setAssetsApi(data); + setAssetsApi({ + modelUuid: updatedData.modelUuid, + modelName: updatedData.modelName, + assetId: updatedData.assetId, + position: updatedData.position, + rotation: { x: updatedData.rotation[0], y: updatedData.rotation[1], z: updatedData.rotation[2] }, + isLocked: false, + isVisible: true, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { - //SOCKET + // SOCKET - socket.emit("v1:model-asset:add", data); + socket.emit("v1:model-asset:add", data); + } } } @@ -237,7 +264,7 @@ function use3DRedoHandler() { isLocked: false, isVisible: true, eventData: {}, - socketId: socket.id, + socketId: socket?.id, versionId: selectedVersion?.versionId || '', projectId, userId @@ -248,13 +275,27 @@ function use3DRedoHandler() { addEvent(assetData.eventData as EventsSchema); } - // API + if (!socket?.active) { + // REST - // setAssetsApi(data); + setAssetsApi({ + modelUuid: assetData.modelUuid, + modelName: assetData.modelName, + assetId: assetData.assetId, + position: assetData.position, + rotation: { x: assetData.rotation[0], y: assetData.rotation[1], z: assetData.rotation[2] }, + isLocked: false, + isVisible: true, + eventData: data.eventData, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { - //SOCKET + // SOCKET - socket.emit("v1:model-asset:add", data); + socket.emit("v1:model-asset:add", data); + } } } @@ -271,7 +312,7 @@ function use3DRedoHandler() { isLocked: false, isVisible: true, eventData: {}, - socketId: socket.id, + socketId: socket?.id, versionId: selectedVersion?.versionId || '', projectId, userId @@ -282,13 +323,27 @@ function use3DRedoHandler() { addEvent(assetData.eventData as EventsSchema); } - // API + if (!socket?.active) { + //REST - // setAssetsApi(data); + setAssetsApi({ + modelUuid: assetData.modelUuid, + modelName: assetData.modelName, + assetId: assetData.assetId, + position: assetData.position, + rotation: { x: assetData.rotation[0], y: assetData.rotation[1], z: assetData.rotation[2] }, + isLocked: false, + isVisible: true, + eventData: data.eventData, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { - //SOCKET + //SOCKET - socket.emit("v1:model-asset:add", data); + socket.emit("v1:model-asset:add", data); + } } } diff --git a/app/src/modules/scene/controls/undoRedoControls/handlers/use3DUndoHandler.ts b/app/src/modules/scene/controls/undoRedoControls/handlers/use3DUndoHandler.ts index 50fd6cf..877dff6 100644 --- a/app/src/modules/scene/controls/undoRedoControls/handlers/use3DUndoHandler.ts +++ b/app/src/modules/scene/controls/undoRedoControls/handlers/use3DUndoHandler.ts @@ -7,8 +7,8 @@ import { useSocketStore } from "../../../../../store/builder/store"; import { upsertProductOrEventApi } from "../../../../../services/simulation/products/UpsertProductOrEventApi"; -// import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; -// import { deleteFloorItem } from "../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi"; +import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; +import { deleteFloorItem } from "../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi"; function use3DUndoHandler() { const { undoRedo3DStore, assetStore, productStore, eventStore } = useSceneContext(); @@ -137,7 +137,7 @@ function use3DUndoHandler() { isLocked: false, isVisible: true, eventData: {}, - socketId: socket.id, + socketId: socket?.id, versionId: selectedVersion?.versionId || '', projectId, userId @@ -148,35 +148,52 @@ function use3DUndoHandler() { addEvent(assetData.eventData as EventsSchema); } - // API + if (!socket?.active) { + // REST - // setAssetsApi(data); + setAssetsApi({ + modelUuid: assetData.modelUuid, + modelName: assetData.modelName, + assetId: assetData.assetId, + position: assetData.position, + rotation: { x: assetData.rotation[0], y: assetData.rotation[1], z: assetData.rotation[2] }, + isLocked: false, + isVisible: true, + eventData: data.eventData, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { - //SOCKET + // SOCKET - socket.emit("v1:model-asset:add", data); + socket.emit("v1:model-asset:add", data); + } } } const deleteAssetToBackend = (assetData: Asset) => { - //REST + if (!socket?.active) { + // REST - // const response = deleteFloorItem(organization, assetData.modelUuid, assetData.modelName); + deleteFloorItem(organization, assetData.modelUuid, assetData.modelName); + } else { - //SOCKET + // SOCKET - const data = { - organization, - modelUuid: assetData.modelUuid, - modelName: assetData.modelName, - socketId: socket.id, - userId, - versionId: selectedVersion?.versionId || '', - projectId + const data = { + organization, + modelUuid: assetData.modelUuid, + modelName: assetData.modelName, + socketId: socket.id, + userId, + versionId: selectedVersion?.versionId || '', + projectId + } + + socket.emit('v1:model-asset:delete', data) } - const response = socket.emit('v1:model-asset:delete', data) - removeEvent(assetData.modelUuid); const updatedEvents = deleteEvent(assetData.modelUuid); @@ -189,10 +206,7 @@ function use3DUndoHandler() { ); }) - if (response) { - - removeAsset(assetData.modelUuid); - } + removeAsset(assetData.modelUuid); } const updateAssetToBackend = (modelUuid: string, updatedData: Asset) => { @@ -207,41 +221,57 @@ function use3DUndoHandler() { rotation: { x: updatedData.rotation[0], y: updatedData.rotation[1], z: updatedData.rotation[2] }, isLocked: false, isVisible: true, - socketId: socket.id, + socketId: socket?.id, versionId: selectedVersion?.versionId || '', projectId, userId }; - // API + if (!socket?.active) { + // REST - // setAssetsApi(data); + setAssetsApi({ + modelUuid: updatedData.modelUuid, + modelName: updatedData.modelName, + assetId: updatedData.assetId, + position: updatedData.position, + rotation: { x: updatedData.rotation[0], y: updatedData.rotation[1], z: updatedData.rotation[2] }, + isLocked: false, + isVisible: true, + versionId: selectedVersion?.versionId || '', + projectId: projectId, + }); + } else { - //SOCKET + // SOCKET - socket.emit("v1:model-asset:add", data); + socket.emit("v1:model-asset:add", data); + } } } const copyAssetToBackend = (assetData: Asset) => { - //REST + if (!socket?.active) { + // REST - // const response = deleteFloorItem(organization, assetData.modelUuid, assetData.modelName); + deleteFloorItem(organization, assetData.modelUuid, assetData.modelName); + } else { - //SOCKET + // SOCKET - const data = { - organization, - modelUuid: assetData.modelUuid, - modelName: assetData.modelName, - socketId: socket.id, - userId, - versionId: selectedVersion?.versionId || '', - projectId + const data = { + organization, + modelUuid: assetData.modelUuid, + modelName: assetData.modelName, + socketId: socket.id, + userId, + versionId: selectedVersion?.versionId || '', + projectId + } + + socket.emit('v1:model-asset:delete', data) } - const response = socket.emit('v1:model-asset:delete', data) - removeEvent(assetData.modelUuid); const updatedEvents = deleteEvent(assetData.modelUuid); @@ -254,31 +284,31 @@ function use3DUndoHandler() { ); }) - if (response) { - - removeAsset(assetData.modelUuid); - } + removeAsset(assetData.modelUuid); } const duplicateAssetToBackend = (assetData: Asset) => { - //REST + if (!socket?.active) { + // REST - // const response = deleteFloorItem(organization, assetData.modelUuid, assetData.modelName); + deleteFloorItem(organization, assetData.modelUuid, assetData.modelName); + } else { - //SOCKET + // SOCKET - const data = { - organization, - modelUuid: assetData.modelUuid, - modelName: assetData.modelName, - socketId: socket.id, - userId, - versionId: selectedVersion?.versionId || '', - projectId + const data = { + organization, + modelUuid: assetData.modelUuid, + modelName: assetData.modelName, + socketId: socket.id, + userId, + versionId: selectedVersion?.versionId || '', + projectId + } + + socket.emit('v1:model-asset:delete', data) } - const response = socket.emit('v1:model-asset:delete', data) - removeEvent(assetData.modelUuid); const updatedEvents = deleteEvent(assetData.modelUuid); @@ -291,10 +321,7 @@ function use3DUndoHandler() { ); }) - if (response) { - - removeAsset(assetData.modelUuid); - } + removeAsset(assetData.modelUuid); } const addWallAssetToBackend = (assetData: WallAsset) => { diff --git a/app/src/modules/scene/scene.tsx b/app/src/modules/scene/scene.tsx index 635edd2..9d154c4 100644 --- a/app/src/modules/scene/scene.tsx +++ b/app/src/modules/scene/scene.tsx @@ -34,11 +34,11 @@ export default function Scene({ layout }: { readonly layout: "Main Layout" | "Co useEffect(() => { if (!projectId || loadingProgress !== 0) return; getAllProjects(userId, organization).then((projects) => { - if (!projects || !projects.Projects) return; + if (!projects.Projects) return; let project = projects.Projects.find((val: any) => val.projectUuid === projectId || val._id === projectId); const canvas = document.getElementById("sceneCanvas")?.getElementsByTagName("canvas")[0]; if (!canvas) return; - compressImage((canvas as HTMLCanvasElement)?.toDataURL("image/png")).then((screenshotDataUrl) => { + compressImage(canvas.toDataURL("image/png")).then((screenshotDataUrl) => { const updateProjects = { projectId: project?._id, organization, diff --git a/app/src/pages/Dashboard.tsx b/app/src/pages/Dashboard.tsx index 606765c..a328f9a 100644 --- a/app/src/pages/Dashboard.tsx +++ b/app/src/pages/Dashboard.tsx @@ -17,7 +17,7 @@ const Dashboard: React.FC = () => { useEffect(() => { const token = localStorage.getItem("token"); const refreshToken = localStorage.getItem("refreshToken") - if (token) { + if (token && refreshToken) { useSocketStore.getState().initializeSocket(email, organization, token, refreshToken); } else { diff --git a/app/src/pages/Project.tsx b/app/src/pages/Project.tsx index f3f369a..ab47701 100644 --- a/app/src/pages/Project.tsx +++ b/app/src/pages/Project.tsx @@ -102,7 +102,7 @@ const Project: React.FC = () => { const token = localStorage.getItem("token"); const refreshToken = localStorage.getItem("refreshToken"); echo.warn('Validating token'); - if (token) { + if (token && refreshToken) { useSocketStore .getState() .initializeSocket(email, organization, token, refreshToken); diff --git a/app/src/store/builder/store.ts b/app/src/store/builder/store.ts index d35ae36..d4ef56e 100644 --- a/app/src/store/builder/store.ts +++ b/app/src/store/builder/store.ts @@ -1,10 +1,28 @@ -import { Object3D } from "three"; import { create } from "zustand"; import { io } from "socket.io-client"; import * as CONSTANTS from "../../types/world/worldConstants"; -export const useSocketStore = create((set: any, get: any) => ({ +type SocketStore = { + socket: ReturnType | null; + visualizationSocket?: ReturnType | null; + dashBoardSocket?: ReturnType | null; + projectSocket?: ReturnType | null; + threadSocket?: ReturnType | null; + initializeSocket: ( + email?: string, + organization?: string, + token?: string, + refreshToken?: string + ) => void; + disconnectSocket: () => void; +}; + +export const useSocketStore = create((set, get) => ({ socket: null, + visualizationSocket: null, + dashBoardSocket: null, + projectSocket: null, + threadSocket: null, initializeSocket: ( email?: string, organization?: string, @@ -63,13 +81,19 @@ export const useSocketStore = create((set: any, get: any) => ({ }); }, disconnectSocket: () => { - set((state: any) => { + set((state) => { state.socket?.disconnect(); state.visualizationSocket?.disconnect(); state.dashBoardSocket?.disconnect(); state.projectSocket?.disconnect(); state.threadSocket?.disconnect(); - return { socket: null }; + return { + socket: null, + visualizationSocket: null, + dashBoardSocket: null, + projectSocket: null, + threadSocket: null, + }; }); }, }));