From 329acbe397f49a3893400b3057d36457ae5d039d Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Mon, 23 Jun 2025 10:54:17 +0530 Subject: [PATCH 1/8] Refactor code by removing unnecessary lines and comments, and update wall thickness in builder store --- app/src/components/ui/collaboration/ThreadChat.tsx | 7 +------ app/src/modules/builder/builder.tsx | 2 +- app/src/modules/builder/groups/floorPlanGroup.tsx | 2 +- app/src/modules/builder/groups/zoneGroup.tsx | 2 +- app/src/modules/builder/wall/Instances/instance/wall.tsx | 4 ++-- app/src/modules/collaboration/comments/commentsGroup.tsx | 4 +--- .../collaboration/comments/instances/commentInstances.tsx | 4 +--- app/src/store/builder/useBuilderStore.ts | 2 +- 8 files changed, 9 insertions(+), 18 deletions(-) diff --git a/app/src/components/ui/collaboration/ThreadChat.tsx b/app/src/components/ui/collaboration/ThreadChat.tsx index be52ec7..61c33cb 100644 --- a/app/src/components/ui/collaboration/ThreadChat.tsx +++ b/app/src/components/ui/collaboration/ThreadChat.tsx @@ -13,7 +13,6 @@ import { deleteThreadApi } from "../../../services/factoryBuilder/comments/delet import { createThreadApi } from "../../../services/factoryBuilder/comments/createThreadApi"; import { getRelativeTime } from "./function/getRelativeTime"; - const ThreadChat: React.FC = () => { const { userId, organization } = getUserData(); const [openThreadOptions, setOpenThreadOptions] = useState(false); @@ -42,7 +41,6 @@ const ThreadChat: React.FC = () => { useEffect(() => { if (comments.length > 0 && selectedComment) { - const allMessages = comments .flatMap((val: any) => @@ -60,7 +58,7 @@ const ThreadChat: React.FC = () => { }); setMessages(allMessages); - + } }, [selectedComment]) @@ -251,9 +249,6 @@ const ThreadChat: React.FC = () => { threadTitle: value }; - - - if (threadSocket) { setInputActive(false); diff --git a/app/src/modules/builder/builder.tsx b/app/src/modules/builder/builder.tsx index c1ed9a5..ab123ad 100644 --- a/app/src/modules/builder/builder.tsx +++ b/app/src/modules/builder/builder.tsx @@ -274,7 +274,7 @@ export default function Builder() { - {/* */} + ); } diff --git a/app/src/modules/builder/groups/floorPlanGroup.tsx b/app/src/modules/builder/groups/floorPlanGroup.tsx index 8f1c2f2..ed3065d 100644 --- a/app/src/modules/builder/groups/floorPlanGroup.tsx +++ b/app/src/modules/builder/groups/floorPlanGroup.tsx @@ -148,7 +148,7 @@ const FloorPlanGroup = ({ floorPlanGroup, floorPlanGroupLine, floorPlanGroupPoin } if (toolMode === "Wall") { - drawWall(raycaster, plane, floorPlanGroupPoint, snappedPoint, isSnapped, isSnappedUUID, line, ispreSnapped, anglesnappedPoint, isAngleSnapped, lines, floorPlanGroupLine, floorPlanGroup, ReferenceLineMesh, LineCreated, currentLayerPoint, dragPointControls, setNewLines, setDeletedLines, activeLayer, socket, projectId, selectedVersion?.versionId || '',); + // drawWall(raycaster, plane, floorPlanGroupPoint, snappedPoint, isSnapped, isSnappedUUID, line, ispreSnapped, anglesnappedPoint, isAngleSnapped, lines, floorPlanGroupLine, floorPlanGroup, ReferenceLineMesh, LineCreated, currentLayerPoint, dragPointControls, setNewLines, setDeletedLines, activeLayer, socket, projectId, selectedVersion?.versionId || '',); } if (toolMode === "Floor") { diff --git a/app/src/modules/builder/groups/zoneGroup.tsx b/app/src/modules/builder/groups/zoneGroup.tsx index 929256f..bfaba3f 100644 --- a/app/src/modules/builder/groups/zoneGroup.tsx +++ b/app/src/modules/builder/groups/zoneGroup.tsx @@ -39,7 +39,7 @@ const ZoneGroup: React.FC = () => { const { selectedVersionStore } = useVersionContext(); const { selectedVersion } = selectedVersionStore(); const { projectId } = useParams(); - const { userId, organization, email } = getUserData(); + const { userId, organization } = getUserData(); const groupsRef = useRef(); diff --git a/app/src/modules/builder/wall/Instances/instance/wall.tsx b/app/src/modules/builder/wall/Instances/instance/wall.tsx index a6c5787..4b44892 100644 --- a/app/src/modules/builder/wall/Instances/instance/wall.tsx +++ b/app/src/modules/builder/wall/Instances/instance/wall.tsx @@ -8,8 +8,8 @@ import { useWallStore } from '../../../../../store/builder/useWallStore'; import { useWallClassification } from './helpers/useWallClassification'; import { useFrame, useThree } from '@react-three/fiber'; import { useWallVisibility } from '../../../../../store/builder/store'; -import { Decal, PivotControls } from '@react-three/drei'; -import { Base, Geometry, Subtraction } from '@react-three/csg'; +import { Decal } from '@react-three/drei'; +import { Base } from '@react-three/csg'; function Wall({ wall }: { readonly wall: Wall }) { const { walls } = useWallStore(); diff --git a/app/src/modules/collaboration/comments/commentsGroup.tsx b/app/src/modules/collaboration/comments/commentsGroup.tsx index 08f39c0..c15e468 100644 --- a/app/src/modules/collaboration/comments/commentsGroup.tsx +++ b/app/src/modules/collaboration/comments/commentsGroup.tsx @@ -1,18 +1,16 @@ import { useEffect, useState } from "react"; import { useThree } from "@react-three/fiber"; -import { MathUtils, Vector3 } from "three"; +import { Vector3 } from "three"; import CommentInstances from "./instances/commentInstances"; import { Sphere } from "@react-three/drei"; import { useActiveTool, useSelectedComment } from "../../../store/builder/store"; - function CommentsGroup() { const { gl, raycaster, camera, scene, pointer, size } = useThree(); const { activeTool } = useActiveTool(); const [hoverPos, setHoverPos] = useState(null); const { setSelectedComment, setCommentPositionState, setPosition2Dstate } = useSelectedComment(); - useEffect(() => { const canvasElement = gl.domElement; diff --git a/app/src/modules/collaboration/comments/instances/commentInstances.tsx b/app/src/modules/collaboration/comments/instances/commentInstances.tsx index 2a9922e..1030b17 100644 --- a/app/src/modules/collaboration/comments/instances/commentInstances.tsx +++ b/app/src/modules/collaboration/comments/instances/commentInstances.tsx @@ -6,17 +6,16 @@ import { useParams } from 'react-router-dom'; import { getUserData } from '../../../../functions/getUserData'; import { getRelativeTime } from '../../../../components/ui/collaboration/function/getRelativeTime'; - function CommentInstances() { const { comments, setComments } = useCommentStore(); const { projectId } = useParams(); const { userId } = getUserData() + const getThreads = async () => { if (!projectId) return; try { const getComments = await getAllThreads(projectId); - const formattedThreads = Array.isArray(getComments.data) ? getComments.data.map((thread: any) => ({ ...thread, @@ -32,7 +31,6 @@ function CommentInstances() { : [], })) : []; - // console.log('formattedThreads: ', formattedThreads); setComments(formattedThreads); } catch (err) { // console.error("Failed to fetch threads:", err); diff --git a/app/src/store/builder/useBuilderStore.ts b/app/src/store/builder/useBuilderStore.ts index a23198b..da52a2e 100644 --- a/app/src/store/builder/useBuilderStore.ts +++ b/app/src/store/builder/useBuilderStore.ts @@ -83,7 +83,7 @@ export const useBuilderStore = create()( // Wall - wallThickness: 0.1, + wallThickness: 0.5, wallHeight: 7, outsideMaterial: 'Default Material', insideMaterial: 'Default Material', From f593fcd578afcc90a297e511f3b92e38765b30bf Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Mon, 23 Jun 2025 13:38:26 +0530 Subject: [PATCH 2/8] Enhance builder functionality by implementing drag-and-drop for lines and points, adding hover effects, and improving wall distance display in the UI. --- .../aisle/Instances/aisleInstances.tsx | 4 - app/src/modules/builder/builder.tsx | 4 +- app/src/modules/builder/groups/zoneGroup.tsx | 6 - app/src/modules/builder/line/line.tsx | 136 ++++++++++++++++-- app/src/modules/builder/point/point.tsx | 63 +++++--- .../builder/wall/Instances/wallInstances.tsx | 44 ++++-- app/src/store/builder/useBuilderStore.ts | 12 ++ app/src/store/builder/useWallStore.tsx | 21 +++ 8 files changed, 237 insertions(+), 53 deletions(-) diff --git a/app/src/modules/builder/aisle/Instances/aisleInstances.tsx b/app/src/modules/builder/aisle/Instances/aisleInstances.tsx index ec38412..7683457 100644 --- a/app/src/modules/builder/aisle/Instances/aisleInstances.tsx +++ b/app/src/modules/builder/aisle/Instances/aisleInstances.tsx @@ -48,14 +48,11 @@ function AisleInstances() { {toggleView && } - ) })} diff --git a/app/src/modules/builder/builder.tsx b/app/src/modules/builder/builder.tsx index ab123ad..cbbf2fe 100644 --- a/app/src/modules/builder/builder.tsx +++ b/app/src/modules/builder/builder.tsx @@ -104,7 +104,7 @@ export default function Builder() { const { setWalls } = useWalls(); const { refTextupdate, setRefTextUpdate } = useRefTextUpdate(); const { projectId } = useParams(); - const { setHoveredPoint } = useBuilderStore(); + const { setHoveredPoint, setHoveredLine } = useBuilderStore(); const { userId, organization } = getUserData(); // const loader = new GLTFLoader(); @@ -127,7 +127,9 @@ export default function Builder() { dragPointControls ); } else { + setHoveredLine(null); setHoveredPoint(null); + state.gl.domElement.style.cursor = 'default'; setToolMode('cursor'); loadWalls(lines, setWalls); setUpdateScene(true); diff --git a/app/src/modules/builder/groups/zoneGroup.tsx b/app/src/modules/builder/groups/zoneGroup.tsx index bfaba3f..24f6ee4 100644 --- a/app/src/modules/builder/groups/zoneGroup.tsx +++ b/app/src/modules/builder/groups/zoneGroup.tsx @@ -384,13 +384,7 @@ const ZoneGroup: React.FC = () => { drag = true; } raycaster.setFromCamera(pointer, camera); - const intersects = raycaster.intersectObjects(groupsRef.current.children, true); - if (intersects.length > 0 && intersects[0].object.name.includes("point")) { - gl.domElement.style.cursor = toolMode === "move" ? "pointer" : "default"; - } else { - gl.domElement.style.cursor = "default"; - } if (isDragging && draggedSphere) { raycaster.setFromCamera(pointer, camera); const intersectionPoint = new THREE.Vector3(); diff --git a/app/src/modules/builder/line/line.tsx b/app/src/modules/builder/line/line.tsx index aa929d2..68402d9 100644 --- a/app/src/modules/builder/line/line.tsx +++ b/app/src/modules/builder/line/line.tsx @@ -1,13 +1,26 @@ import * as THREE from 'three'; -import { useMemo } from "react"; +import { useEffect, useMemo, useState } from "react"; import * as Constants from '../../../types/world/worldConstants'; -import { Tube } from '@react-three/drei'; +import { DragControls, Tube } from '@react-three/drei'; +import { useToolMode } from '../../../store/builder/store'; +import { useBuilderStore } from '../../../store/builder/useBuilderStore'; +import { useWallStore } from '../../../store/builder/useWallStore'; +import { useThree } from '@react-three/fiber'; interface LineProps { points: [Point, Point]; } function Line({ points }: Readonly) { + const [isHovered, setIsHovered] = useState(false); + const { raycaster, camera, pointer, gl } = useThree(); + const plane = useMemo(() => new THREE.Plane(new THREE.Vector3(0, 1, 0), 0), []); + const [isDeletable, setIsDeletable] = useState(false); + const { toolMode } = useToolMode(); + const { removeWallByPoints, setPosition } = useWallStore(); + const [dragOffset, setDragOffset] = useState(null); + const { hoveredLine, setHoveredLine, hoveredPoint } = useBuilderStore(); + const path = useMemo(() => { const [start, end] = points.map(p => new THREE.Vector3(...p.position)); return new THREE.LineCurve3(start, end); @@ -44,16 +57,119 @@ function Line({ points }: Readonly) { } } + useEffect(() => { + if (toolMode === '2D-Delete') { + if (isHovered && !hoveredPoint) { + setIsDeletable(true); + } else { + setIsDeletable(false); + } + } else { + setIsDeletable(false); + } + }, [isHovered, colors.defaultLineColor, colors.defaultDeleteColor, toolMode, hoveredPoint]); + + useEffect(() => { + if (hoveredLine && (hoveredLine[0].pointUuid !== points[0].pointUuid || hoveredLine[1].pointUuid !== points[1].pointUuid)) { + setIsHovered(false); + } + }, [hoveredLine]) + + const handlePointClick = (points: [Point, Point]) => { + if (toolMode === '2D-Delete') { + if (points[0].pointType === 'Wall' && points[1].pointType === 'Wall') { + removeWallByPoints(points); + } + gl.domElement.style.cursor = 'default'; + } + } + + const handleDrag = (points: [Point, Point]) => { + if (toolMode === 'move' && isHovered && dragOffset) { + raycaster.setFromCamera(pointer, camera); + const intersectionPoint = new THREE.Vector3(); + const hit = raycaster.ray.intersectPlane(plane, intersectionPoint); + + if (hit) { + gl.domElement.style.cursor = 'move'; + const positionWithOffset = new THREE.Vector3().addVectors(hit, dragOffset); + + const start = new THREE.Vector3(...points[0].position); + const end = new THREE.Vector3(...points[1].position); + const midPoint = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5); + + const delta = new THREE.Vector3().subVectors(positionWithOffset, midPoint); + + const newStart = new THREE.Vector3().addVectors(start, delta); + const newEnd = new THREE.Vector3().addVectors(end, delta); + + setPosition(points[0].pointUuid, [newStart.x, newStart.y, newStart.z]); + setPosition(points[1].pointUuid, [newEnd.x, newEnd.y, newEnd.z]); + } + } + }; + + const handleDragStart = (points: [Point, Point]) => { + raycaster.setFromCamera(pointer, camera); + const intersectionPoint = new THREE.Vector3(); + const hit = raycaster.ray.intersectPlane(plane, intersectionPoint); + + if (hit && !hoveredPoint) { + const start = new THREE.Vector3(...points[0].position); + const end = new THREE.Vector3(...points[1].position); + const midPoint = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5); + + const offset = new THREE.Vector3().subVectors(midPoint, hit); + setDragOffset(offset); + } + }; + + const handleDragEnd = (points: [Point, Point]) => { + gl.domElement.style.cursor = 'default'; + setDragOffset(null); + if (toolMode !== 'move') return; + if (points[0].pointType === 'Wall' && points[1].pointType === 'Wall') { + // console.log('Wall after drag: ', points); + } + } + return ( - handleDragStart(points)} + onDrag={() => handleDrag(points)} + onDragEnd={() => handleDragEnd(points)} > - - + { + handlePointClick(points); + }} + onPointerOver={() => { + if (!hoveredLine) { + setHoveredLine(points); + setIsHovered(true) + if (toolMode === 'move' && !hoveredPoint) { + gl.domElement.style.cursor = 'pointer'; + } + } + }} + onPointerOut={() => { + if (hoveredLine) { + setHoveredLine(null); + gl.domElement.style.cursor = 'default'; + } + setIsHovered(false) + }} + > + + + ); } diff --git a/app/src/modules/builder/point/point.tsx b/app/src/modules/builder/point/point.tsx index 425d24b..3545e99 100644 --- a/app/src/modules/builder/point/point.tsx +++ b/app/src/modules/builder/point/point.tsx @@ -15,9 +15,10 @@ import { useSceneContext } from '../../scene/sceneContext'; function Point({ point }: { readonly point: Point }) { const materialRef = useRef(null); - const { raycaster, camera, pointer } = useThree(); + const { raycaster, camera, pointer, gl } = useThree(); const plane = useMemo(() => new THREE.Plane(new THREE.Vector3(0, 1, 0), 0), []); const [isHovered, setIsHovered] = useState(false); + const [dragOffset, setDragOffset] = useState(null); const { toolMode } = useToolMode(); const { aisleStore } = useSceneContext(); const { setPosition: setAislePosition, removePoint: removeAislePoint, getAislesByPointId } = aisleStore(); @@ -91,33 +92,45 @@ function Point({ point }: { readonly point: Point }) { }), [colors.defaultInnerColor, colors.defaultOuterColor]); const handleDrag = (point: Point) => { - if (toolMode === 'move' && isHovered) { + if (toolMode === 'move' && isHovered && dragOffset) { raycaster.setFromCamera(pointer, camera); const intersectionPoint = new THREE.Vector3(); - const position = raycaster.ray.intersectPlane(plane, intersectionPoint); - if (point.pointType === 'Aisle') { - if (position) { - const newPosition: [number, number, number] = [position.x, position.y, position.z]; - const aisleSnappedPosition = snapAisleAngle(newPosition); - const finalSnappedPosition = snapAislePoint(aisleSnappedPosition.position); + const hit = raycaster.ray.intersectPlane(plane, intersectionPoint); - setAislePosition(point.pointUuid, finalSnappedPosition.position); + if (hit) { + gl.domElement.style.cursor = 'move'; + const positionWithOffset = new THREE.Vector3().addVectors(hit, dragOffset); + const newPosition: [number, number, number] = [positionWithOffset.x, positionWithOffset.y, positionWithOffset.z]; - } - } else if (point.pointType === 'Wall') { - if (position) { - const newPosition: [number, number, number] = [position.x, position.y, position.z]; - const wallSnappedPosition = snapWallAngle(newPosition); - const finalSnappedPosition = snapWallPoint(wallSnappedPosition.position); - - setWallPosition(point.pointUuid, finalSnappedPosition.position); + if (point.pointType === 'Aisle') { + const aisleSnapped = snapAisleAngle(newPosition); + const finalSnapped = snapAislePoint(aisleSnapped.position); + setAislePosition(point.pointUuid, finalSnapped.position); + } else if (point.pointType === 'Wall') { + const wallSnapped = snapWallAngle(newPosition); + const finalSnapped = snapWallPoint(wallSnapped.position); + setWallPosition(point.pointUuid, finalSnapped.position); } } } - } + }; + + const handleDragStart = (point: Point) => { + raycaster.setFromCamera(pointer, camera); + const intersectionPoint = new THREE.Vector3(); + const hit = raycaster.ray.intersectPlane(plane, intersectionPoint); + + if (hit) { + const currentPosition = new THREE.Vector3(...point.position); + const offset = new THREE.Vector3().subVectors(currentPosition, hit); + setDragOffset(offset); + } + }; const handleDragEnd = (point: Point) => { - if (toolMode === '2D-Delete') return; + gl.domElement.style.cursor = 'default'; + setDragOffset(null); + if (toolMode !== 'move') return; if (point.pointType === 'Aisle') { const updatedAisles = getAislesByPointId(point.pointUuid); if (updatedAisles.length > 0 && projectId) { @@ -148,6 +161,7 @@ function Point({ point }: { readonly point: Point }) { setHoveredPoint(null); } } + gl.domElement.style.cursor = 'default'; } } @@ -165,8 +179,9 @@ function Point({ point }: { readonly point: Point }) { { handleDrag(point) }} - onDragEnd={() => { handleDragEnd(point) }} + onDragStart={() => handleDragStart(point)} + onDrag={() => handleDrag(point)} + onDragEnd={() => handleDragEnd(point)} > { if (!hoveredPoint) { setHoveredPoint(point); - setIsHovered(true) + setIsHovered(true); + if (toolMode === 'move') { + gl.domElement.style.cursor = 'pointer'; + } } }} onPointerOut={() => { if (hoveredPoint) { setHoveredPoint(null); + gl.domElement.style.cursor = 'default'; } setIsHovered(false) }} diff --git a/app/src/modules/builder/wall/Instances/wallInstances.tsx b/app/src/modules/builder/wall/Instances/wallInstances.tsx index 21e4819..eacf943 100644 --- a/app/src/modules/builder/wall/Instances/wallInstances.tsx +++ b/app/src/modules/builder/wall/Instances/wallInstances.tsx @@ -1,10 +1,12 @@ -import React, { useEffect, useMemo, useRef } from 'react'; +import React, { useEffect, useMemo } from 'react'; import { useWallStore } from '../../../../store/builder/useWallStore' import WallInstance from './instance/wallInstance'; import Line from '../../line/line'; import Point from '../../point/point'; import { useToggleView } from '../../../../store/builder/store'; import { Geometry } from '@react-three/csg'; +import { Vector3 } from 'three'; +import { Html } from '@react-three/drei'; function WallInstances() { const { walls } = useWallStore(); @@ -34,21 +36,12 @@ function WallInstances() { <> {!toggleView && ( - - {/* */} - {walls.map((wall) => ( ))} - - {/* - - - - */} )} @@ -61,11 +54,42 @@ function WallInstances() { + {walls.map((wall) => ( ))} + + {walls.map((wall) => { + const textPosition = new Vector3().addVectors(new Vector3(...wall.points[0].position), new Vector3(...wall.points[1].position)).divideScalar(2); + const distance = new Vector3(...wall.points[0].position).distanceTo(new Vector3(...wall.points[1].position)); + + return ( + < React.Fragment key={wall.wallUuid}> + {toggleView && + +
+ {distance.toFixed(2)} m +
+ + } + + ) + })} +
)} diff --git a/app/src/store/builder/useBuilderStore.ts b/app/src/store/builder/useBuilderStore.ts index da52a2e..086a020 100644 --- a/app/src/store/builder/useBuilderStore.ts +++ b/app/src/store/builder/useBuilderStore.ts @@ -9,6 +9,8 @@ interface BuilderState { snappedPoint: Point | null; snappedPosition: [number, number, number] | null; + hoveredLine: [Point, Point] | null; + // Wall wallThickness: number; @@ -47,6 +49,8 @@ interface BuilderState { setSnappedPoint: (point: Point | null) => void; setSnappedPosition: (position: [number, number, number] | null) => void; + setHoveredLine: (line: [Point, Point] | null) => void; + setSelectedAisle: (aisle: Object3D | null) => void; setAisleType: (type: AisleTypes) => void; @@ -81,6 +85,8 @@ export const useBuilderStore = create()( snappedPoint: null, snappedPosition: null, + hoveredLine: null, + // Wall wallThickness: 0.5, @@ -128,6 +134,12 @@ export const useBuilderStore = create()( }); }, + setHoveredLine: (line: [Point, Point] | null) => { + set((state) => { + state.hoveredLine = line; + }) + }, + setSnappedPoint: (point: Point | null) => { set((state) => { state.snappedPoint = point; diff --git a/app/src/store/builder/useWallStore.tsx b/app/src/store/builder/useWallStore.tsx index 029ace6..4f57849 100644 --- a/app/src/store/builder/useWallStore.tsx +++ b/app/src/store/builder/useWallStore.tsx @@ -7,6 +7,7 @@ interface WallStore { addWall: (wall: Wall) => void; updateWall: (uuid: string, updated: Partial) => void; removeWall: (uuid: string) => void; + removeWallByPoints: (Points: [Point, Point]) => Wall | undefined; addDecal: (wallUuid: string, decal: Decal) => void; updateDecal: (decalUuid: string, decal: Decal) => void; removeDecal: (decalUuid: string) => void; @@ -48,6 +49,26 @@ export const useWallStore = create()( state.walls = state.walls.filter(w => w.wallUuid !== uuid); }), + removeWallByPoints: (points) => { + let removedWall: Wall | undefined; + const [pointA, pointB] = points; + + set((state) => { + state.walls = state.walls.filter(wall => { + const wallPoints = wall.points.map(p => p.pointUuid); + const hasBothPoints = wallPoints.includes(pointA.pointUuid) && wallPoints.includes(pointB.pointUuid); + + if (hasBothPoints) { + removedWall = JSON.parse(JSON.stringify(wall)); + return false; + } + return true; + }); + }); + + return removedWall; + }, + addDecal: (wallUuid, decal) => set((state) => { const wallToUpdate = state.walls.find(w => w.wallUuid === wallUuid); if (wallToUpdate) { From 385a64d3074e65f1bab2fb8e7e7978160f48ec3e Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Mon, 23 Jun 2025 14:11:49 +0530 Subject: [PATCH 3/8] Remove debug log from useWallClassification and update dependencies in WallCreator effect --- .../instance/helpers/useWallClassification.ts | 1 - .../builder/wall/Instances/wallInstances.tsx | 72 +++++++++++++++---- .../builder/wall/wallCreator/wallCreator.tsx | 2 +- 3 files changed, 60 insertions(+), 15 deletions(-) diff --git a/app/src/modules/builder/wall/Instances/instance/helpers/useWallClassification.ts b/app/src/modules/builder/wall/Instances/instance/helpers/useWallClassification.ts index 00b7eaa..5ae9a21 100644 --- a/app/src/modules/builder/wall/Instances/instance/helpers/useWallClassification.ts +++ b/app/src/modules/builder/wall/Instances/instance/helpers/useWallClassification.ts @@ -120,7 +120,6 @@ export function useWallClassification(walls: Walls) { } }); - console.log('rooms: ', rooms); return rooms; }; diff --git a/app/src/modules/builder/wall/Instances/wallInstances.tsx b/app/src/modules/builder/wall/Instances/wallInstances.tsx index eacf943..37f07e0 100644 --- a/app/src/modules/builder/wall/Instances/wallInstances.tsx +++ b/app/src/modules/builder/wall/Instances/wallInstances.tsx @@ -1,15 +1,22 @@ import React, { useEffect, useMemo } from 'react'; +import { DoubleSide, RepeatWrapping, Shape, SRGBColorSpace, TextureLoader, Vector2, Vector3 } from 'three'; +import { Geometry } from '@react-three/csg'; +import { Html, Extrude } from '@react-three/drei'; import { useWallStore } from '../../../../store/builder/useWallStore' -import WallInstance from './instance/wallInstance'; +import { useWallClassification } from './instance/helpers/useWallClassification'; +import { useToggleView } from '../../../../store/builder/store'; import Line from '../../line/line'; import Point from '../../point/point'; -import { useToggleView } from '../../../../store/builder/store'; -import { Geometry } from '@react-three/csg'; -import { Vector3 } from 'three'; -import { Html } from '@react-three/drei'; +import WallInstance from './instance/wallInstance'; +import * as Constants from '../../../../types/world/worldConstants'; + +import texturePath from "../../../../assets/textures/floor/white.png"; +import texturePathDark from "../../../../assets/textures/floor/black.png"; +import { useLoader } from '@react-three/fiber'; function WallInstances() { const { walls } = useWallStore(); + const { rooms } = useWallClassification(walls) const { toggleView } = useToggleView(); useEffect(() => { @@ -34,15 +41,22 @@ function WallInstances() { return ( <> - {!toggleView && ( - - - {walls.map((wall) => ( - + <> + + + {walls.map((wall) => ( + + ))} + + + + + {rooms.map((room, index) => ( + ))} - - + + )} {toggleView && ( @@ -97,4 +111,36 @@ function WallInstances() { ) } -export default WallInstances +export default WallInstances; + +function Floor({ room }: { room: Point[] }) { + const savedTheme: string | null = localStorage.getItem('theme'); + const textureScale = Constants.floorConfig.textureScale; + const floorTexture = useLoader(TextureLoader, savedTheme === "dark" ? texturePathDark : texturePath); + floorTexture.wrapS = floorTexture.wrapT = RepeatWrapping; + floorTexture.repeat.set(textureScale, textureScale); + floorTexture.colorSpace = SRGBColorSpace; + + const shape = useMemo(() => { + const shape = new Shape(); + const points = room.map(p => new Vector2(p.position[0], p.position[2])); + if (points.length < 3) return null; + shape.moveTo(points[0].x, points[0].y); + points.forEach((pt) => { shape.lineTo(pt.x, pt.y); }); + return shape; + }, [room]); + + if (!shape) return null; + + return ( + + + + + + ); +} diff --git a/app/src/modules/builder/wall/wallCreator/wallCreator.tsx b/app/src/modules/builder/wall/wallCreator/wallCreator.tsx index e263571..61af916 100644 --- a/app/src/modules/builder/wall/wallCreator/wallCreator.tsx +++ b/app/src/modules/builder/wall/wallCreator/wallCreator.tsx @@ -243,7 +243,7 @@ function WallCreator() { canvasElement.removeEventListener("click", onMouseClick); canvasElement.removeEventListener("contextmenu", onContext); }; - }, [gl, camera, scene, raycaster, pointer, plane, toggleView, toolMode, activeLayer, socket, tempPoints, isCreating, addWall, getWallPointById, snappedPosition, snappedPoint]); + }, [gl, camera, scene, raycaster, pointer, plane, toggleView, toolMode, activeLayer, socket, tempPoints, isCreating, addWall, getWallPointById, wallThickness, wallHeight, insideMaterial, outsideMaterial, snappedPosition, snappedPoint]); return ( <> From b49f431ebf4c3d30114ad46d16dae737bdc90e3c Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Tue, 24 Jun 2025 09:31:45 +0530 Subject: [PATCH 4/8] Refactor error handling in API services to use console.error instead of throwing errors - Updated various API service files to replace error throwing with console.error for better logging. - This change affects services related to aisles, assets, cameras, collaboration, comments, environment, lines, marketplace, simulation, visualization, and zones. - The modifications aim to improve error handling by logging errors to the console instead of interrupting the flow with thrown errors. --- app/src/components/Dashboard/DashboardCard.tsx | 1 + app/src/components/Dashboard/DashboardProjects.tsx | 1 + app/src/components/templates/LoadingPage.tsx | 1 + app/src/components/ui/FileMenu.tsx | 1 + app/src/functions/getUserData.ts | 2 +- .../builder/IntialLoad/loadInitialWallItems.ts | 2 +- app/src/modules/builder/builder.tsx | 2 +- .../builder/geomentries/floors/loadOnlyFloors.ts | 2 +- app/src/modules/builder/groups/floorPlanGroup.tsx | 2 +- .../modules/builder/wall/Instances/instance/wall.tsx | 11 +++++------ .../comments/instances/commentInstances.tsx | 1 - app/src/modules/scene/scene.tsx | 1 + .../modules/visualization/functions/handleUiDrop.ts | 2 +- .../visualization/widgets/3d/Dropped3dWidget.tsx | 4 ++-- app/src/pages/Project.tsx | 7 ++++++- app/src/pages/UserAuth.tsx | 3 +-- app/src/services/dashboard/createProject.ts | 2 +- app/src/services/dashboard/deleteProject.ts | 2 +- app/src/services/dashboard/deleteTrash.ts | 4 ++-- app/src/services/dashboard/duplicateProject.ts | 2 +- app/src/services/dashboard/getTrash.ts | 4 ++-- app/src/services/dashboard/projectTutorial.ts | 2 +- app/src/services/dashboard/recentlyViewed.ts | 2 +- app/src/services/dashboard/restoreTrash.ts | 4 ++-- app/src/services/dashboard/searchProjects.ts | 2 +- app/src/services/dashboard/trashSearchProject.ts | 2 +- app/src/services/dashboard/updateProject.ts | 2 +- app/src/services/dashboard/viewProject.ts | 2 +- .../services/factoryBuilder/aisle/createAisleApi.ts | 2 +- .../services/factoryBuilder/aisle/deleteAisleApi.ts | 2 +- app/src/services/factoryBuilder/aisle/getAisleApi.ts | 2 +- .../factoryBuilder/assest/assets/getAssetImages.ts | 2 +- .../factoryBuilder/assest/assets/getAssetModel.ts | 2 +- .../assest/floorAsset/deleteFloorItemApi.ts | 2 +- .../assest/floorAsset/getFloorItemsApi.ts | 2 +- .../factoryBuilder/assest/floorAsset/setAssetsApi.ts | 2 +- .../assest/wallAsset/deleteWallItemApi.ts | 2 +- .../assest/wallAsset/getWallItemsApi.ts | 2 +- .../factoryBuilder/assest/wallAsset/setWallItemApi.ts | 2 +- .../services/factoryBuilder/camera/getCameraApi.ts | 2 +- .../services/factoryBuilder/camera/setCameraApi.ts | 2 +- .../services/factoryBuilder/collab/getActiveUsers.ts | 4 ++-- app/src/services/factoryBuilder/collab/getUsersApi.ts | 4 ++-- .../factoryBuilder/collab/giveCollabAccess.ts | 2 +- .../factoryBuilder/comments/addCommentsApi.ts | 6 +++--- .../factoryBuilder/comments/createThreadApi.ts | 6 +++--- .../factoryBuilder/comments/deleteCommentApi.ts | 6 +++--- .../factoryBuilder/comments/deleteThreadApi.ts | 6 +++--- .../factoryBuilder/comments/editThreadTitleApi.ts | 6 +++--- .../services/factoryBuilder/comments/getAllThreads.ts | 11 ++++++----- .../factoryBuilder/environment/findEnvironment.ts | 2 +- .../factoryBuilder/environment/setEnvironment.ts | 2 +- .../services/factoryBuilder/lines/deleteLayerApi.ts | 2 +- .../services/factoryBuilder/lines/deleteLineApi.ts | 2 +- .../services/factoryBuilder/lines/deletePointApi.ts | 2 +- app/src/services/factoryBuilder/lines/getLinesApi.ts | 2 +- app/src/services/factoryBuilder/lines/setLineApi.ts | 2 +- .../services/factoryBuilder/lines/updatePointApi.ts | 2 +- .../services/factoryBuilder/signInSignUp/signUpApi.ts | 2 +- .../factoryBuilder/versionControl/addVersionApi.ts | 2 +- .../versionControl/getVersionDataApi.ts | 2 +- .../versionControl/getVersionHistoryApi.ts | 2 +- .../services/factoryBuilder/zones/deleteZoneApi.ts | 2 +- app/src/services/factoryBuilder/zones/getZonesApi.ts | 2 +- app/src/services/factoryBuilder/zones/setZonesApi.ts | 2 +- app/src/services/marketplace/fetchAssetDetails.ts | 2 +- app/src/services/marketplace/fetchAssets.ts | 2 +- app/src/services/marketplace/fetchGltfUrl.ts | 2 +- app/src/services/marketplace/getSortedAssets.ts | 2 +- .../simulation/products/UpsertProductOrEventApi.ts | 2 +- .../simulation/products/deleteEventDataApi.ts | 2 +- .../services/simulation/products/deleteProductApi.ts | 2 +- app/src/services/simulation/products/getProductApi.ts | 2 +- .../services/simulation/products/getallProductsApi.ts | 2 +- .../services/simulation/products/renameProductApi.ts | 2 +- app/src/services/visulization/zone/add3dWidget.ts | 2 +- .../services/visulization/zone/addFloatingWidgets.ts | 2 +- app/src/services/visulization/zone/addWidgets.ts | 2 +- app/src/services/visulization/zone/clearPanel.ts | 2 +- app/src/services/visulization/zone/delete3dWidget.ts | 2 +- .../visulization/zone/deleteFloatingWidget.ts | 2 +- app/src/services/visulization/zone/deletePanel.ts | 2 +- app/src/services/visulization/zone/deleteTemplate.ts | 2 +- app/src/services/visulization/zone/deleteWidgetApi.ts | 2 +- app/src/services/visulization/zone/duplicateWidget.ts | 2 +- app/src/services/visulization/zone/get3dWidgetData.ts | 2 +- app/src/services/visulization/zone/getFloatingData.ts | 2 +- .../services/visulization/zone/getSelect2dZoneData.ts | 2 +- app/src/services/visulization/zone/getTemplate.ts | 2 +- app/src/services/visulization/zone/getZoneData.ts | 2 +- app/src/services/visulization/zone/getZones.ts | 2 +- app/src/services/visulization/zone/loadTemplate.ts | 2 +- app/src/services/visulization/zone/lockPanel.ts | 2 +- app/src/services/visulization/zone/panel.ts | 2 +- app/src/services/visulization/zone/saveTempleteApi.ts | 2 +- app/src/services/visulization/zone/update3dWidget.ts | 4 ++-- .../services/visulization/zone/zoneCameraUpdation.ts | 2 +- 97 files changed, 127 insertions(+), 119 deletions(-) diff --git a/app/src/components/Dashboard/DashboardCard.tsx b/app/src/components/Dashboard/DashboardCard.tsx index 1300187..47fa261 100644 --- a/app/src/components/Dashboard/DashboardCard.tsx +++ b/app/src/components/Dashboard/DashboardCard.tsx @@ -127,6 +127,7 @@ const DashboardCard: React.FC = ({ if (!projectId) return; try { const projects = await getAllProjects(userId, organization); + if (!projects || !projects.Projects) return; // console.log("projects: ", projects); let projectUuid = projects.Projects.find( (val: any) => val.projectUuid === projectId || val._id === projectId diff --git a/app/src/components/Dashboard/DashboardProjects.tsx b/app/src/components/Dashboard/DashboardProjects.tsx index 5e2ff05..988c185 100644 --- a/app/src/components/Dashboard/DashboardProjects.tsx +++ b/app/src/components/Dashboard/DashboardProjects.tsx @@ -34,6 +34,7 @@ const DashboardProjects: React.FC = () => { const fetchAllProjects = async () => { try { const projects = await getAllProjects(userId, organization); + if (!projects || !projects.Projects) return; if (JSON.stringify(projects) !== JSON.stringify(workspaceProjects)) { setWorkspaceProjects(projects); diff --git a/app/src/components/templates/LoadingPage.tsx b/app/src/components/templates/LoadingPage.tsx index 1cc62e4..f371a53 100644 --- a/app/src/components/templates/LoadingPage.tsx +++ b/app/src/components/templates/LoadingPage.tsx @@ -23,6 +23,7 @@ const LoadingPage: React.FC = ({ progress }) => { if (!userId) return; getAllProjects(userId, organization).then((projects) => { + if (!projects || !projects.Projects) return; const filterProject = projects?.Projects.find((val: any) => val.projectUuid === projectId || val._id === projectId); if (filterProject) { setProjectName(filterProject.projectName); diff --git a/app/src/components/ui/FileMenu.tsx b/app/src/components/ui/FileMenu.tsx index 18a9f20..86146ba 100644 --- a/app/src/components/ui/FileMenu.tsx +++ b/app/src/components/ui/FileMenu.tsx @@ -51,6 +51,7 @@ const FileMenu: React.FC = () => { if (!email || !userId) return; const projects = await getAllProjects(userId, organization); + if (!projects || !projects.Projects) return; // console.log('projects: ', projects); let projectUuid = projects.Projects.find((val: any) => val.projectUuid === projectId || val._id === projectId) diff --git a/app/src/functions/getUserData.ts b/app/src/functions/getUserData.ts index e0e97ec..4526f0c 100644 --- a/app/src/functions/getUserData.ts +++ b/app/src/functions/getUserData.ts @@ -22,7 +22,7 @@ export const getUserData = (): UserData => { const [_, emailDomain] = email.split("@"); if (!emailDomain) { - throw new Error("Invalid email format"); + console.error("Invalid email format"); } const [organization] = emailDomain.split("."); diff --git a/app/src/modules/builder/IntialLoad/loadInitialWallItems.ts b/app/src/modules/builder/IntialLoad/loadInitialWallItems.ts index e32f0c0..ba82510 100644 --- a/app/src/modules/builder/IntialLoad/loadInitialWallItems.ts +++ b/app/src/modules/builder/IntialLoad/loadInitialWallItems.ts @@ -16,7 +16,7 @@ async function loadInitialWallItems( const { organization, email } = getUserData(); if (!email) { - throw new Error("No email found in localStorage"); + console.error("No email found in localStorage"); } const items = await getWallItems(organization, projectId, versionId); diff --git a/app/src/modules/builder/builder.tsx b/app/src/modules/builder/builder.tsx index cbbf2fe..b977781 100644 --- a/app/src/modules/builder/builder.tsx +++ b/app/src/modules/builder/builder.tsx @@ -276,7 +276,7 @@ export default function Builder() { - + {/* */} ); } diff --git a/app/src/modules/builder/geomentries/floors/loadOnlyFloors.ts b/app/src/modules/builder/geomentries/floors/loadOnlyFloors.ts index 9400be2..3da7b46 100644 --- a/app/src/modules/builder/geomentries/floors/loadOnlyFloors.ts +++ b/app/src/modules/builder/geomentries/floors/loadOnlyFloors.ts @@ -123,7 +123,7 @@ function loadOnlyFloors( const originalPoint = originalLines.flat().find(([point]) => point.x === x && point.z === z); if (!originalPoint) { - throw new Error(`Original point for coordinate [${x}, ${z}] not found.`); + console.error(`Original point for coordinate [${x}, ${z}] not found.`); } return originalPoint; diff --git a/app/src/modules/builder/groups/floorPlanGroup.tsx b/app/src/modules/builder/groups/floorPlanGroup.tsx index ed3065d..8f1c2f2 100644 --- a/app/src/modules/builder/groups/floorPlanGroup.tsx +++ b/app/src/modules/builder/groups/floorPlanGroup.tsx @@ -148,7 +148,7 @@ const FloorPlanGroup = ({ floorPlanGroup, floorPlanGroupLine, floorPlanGroupPoin } if (toolMode === "Wall") { - // drawWall(raycaster, plane, floorPlanGroupPoint, snappedPoint, isSnapped, isSnappedUUID, line, ispreSnapped, anglesnappedPoint, isAngleSnapped, lines, floorPlanGroupLine, floorPlanGroup, ReferenceLineMesh, LineCreated, currentLayerPoint, dragPointControls, setNewLines, setDeletedLines, activeLayer, socket, projectId, selectedVersion?.versionId || '',); + drawWall(raycaster, plane, floorPlanGroupPoint, snappedPoint, isSnapped, isSnappedUUID, line, ispreSnapped, anglesnappedPoint, isAngleSnapped, lines, floorPlanGroupLine, floorPlanGroup, ReferenceLineMesh, LineCreated, currentLayerPoint, dragPointControls, setNewLines, setDeletedLines, activeLayer, socket, projectId, selectedVersion?.versionId || '',); } if (toolMode === "Floor") { diff --git a/app/src/modules/builder/wall/Instances/instance/wall.tsx b/app/src/modules/builder/wall/Instances/instance/wall.tsx index 4b44892..6c2d858 100644 --- a/app/src/modules/builder/wall/Instances/instance/wall.tsx +++ b/app/src/modules/builder/wall/Instances/instance/wall.tsx @@ -13,12 +13,12 @@ import { Base } from '@react-three/csg'; function Wall({ wall }: { readonly wall: Wall }) { const { walls } = useWallStore(); - const { getWallType, isWallFlipped } = useWallClassification(walls); - const wallType = getWallType(wall); - const [visible, setVisible] = useState(true); - const { wallVisibility } = useWallVisibility(); - const meshRef = useRef(); const { camera } = useThree(); + const { wallVisibility } = useWallVisibility(); + const { getWallType, isWallFlipped } = useWallClassification(walls); + const [visible, setVisible] = useState(true); + const meshRef = useRef(); + const wallType = getWallType(wall); const wallFlipped = isWallFlipped(wall); @@ -84,7 +84,6 @@ function Wall({ wall }: { readonly wall: Wall }) { camera.getWorldDirection(u); if (!u || !v) return; setVisible((2 * v.dot(u)) <= 0.1); - } else { setVisible(true); } diff --git a/app/src/modules/collaboration/comments/instances/commentInstances.tsx b/app/src/modules/collaboration/comments/instances/commentInstances.tsx index 1030b17..d5a6028 100644 --- a/app/src/modules/collaboration/comments/instances/commentInstances.tsx +++ b/app/src/modules/collaboration/comments/instances/commentInstances.tsx @@ -37,7 +37,6 @@ function CommentInstances() { } } - useEffect(() => { getThreads(); }, []); diff --git a/app/src/modules/scene/scene.tsx b/app/src/modules/scene/scene.tsx index 2ab4444..b4ef721 100644 --- a/app/src/modules/scene/scene.tsx +++ b/app/src/modules/scene/scene.tsx @@ -34,6 +34,7 @@ export default function Scene({ layout }: { readonly layout: 'Main Layout' | 'Co if (!projectId && loadingProgress > 1) return; getAllProjects(userId, organization) .then((projects) => { + if (!projects || !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; diff --git a/app/src/modules/visualization/functions/handleUiDrop.ts b/app/src/modules/visualization/functions/handleUiDrop.ts index aec51d1..5a056fc 100644 --- a/app/src/modules/visualization/functions/handleUiDrop.ts +++ b/app/src/modules/visualization/functions/handleUiDrop.ts @@ -33,7 +33,7 @@ export const createHandleDrop = ({ const droppedData = JSON.parse(data); const canvasElement = document.getElementById("work-space-three-d-canvas"); - if (!canvasElement) throw new Error("Canvas element not found"); + if (!canvasElement) return; const rect = canvasElement.getBoundingClientRect(); const relativeX = event.clientX - rect.left; diff --git a/app/src/modules/visualization/widgets/3d/Dropped3dWidget.tsx b/app/src/modules/visualization/widgets/3d/Dropped3dWidget.tsx index 0d9fade..c659697 100644 --- a/app/src/modules/visualization/widgets/3d/Dropped3dWidget.tsx +++ b/app/src/modules/visualization/widgets/3d/Dropped3dWidget.tsx @@ -680,7 +680,7 @@ export default function Dropped3dWidgets() { event.preventDefault(); const canvasElement = document.getElementById("work-space-three-d-canvas"); - if (!canvasElement) throw new Error("Canvas element not found"); + if (!canvasElement) return; const canvasRect = canvasElement.getBoundingClientRect(); const relativeX = event.clientX - canvasRect.left; @@ -744,7 +744,7 @@ export default function Dropped3dWidgets() { const canvasElement = document.getElementById( "work-space-three-d-canvas" ); - if (!canvasElement) throw new Error("Canvas element not found"); + if (!canvasElement) return; const canvasRect = canvasElement.getBoundingClientRect(); const relativeX = event.clientX - canvasRect.left; const relativeY = event.clientY - canvasRect.top; diff --git a/app/src/pages/Project.tsx b/app/src/pages/Project.tsx index 34a9a24..3d46865 100644 --- a/app/src/pages/Project.tsx +++ b/app/src/pages/Project.tsx @@ -56,11 +56,14 @@ const Project: React.FC = () => { } getAllProjects(userId, organization).then((projects) => { + if (!projects || !projects.Projects) return; const filterProject = projects?.Projects.find((val: any) => val.projectUuid === projectId || val._id === projectId) setProjectName(filterProject.projectName) viewProject(organization, filterProject._id, userId).then((viewedProject) => { }); - }); + }).catch(() => { + console.error("Error fetching projects") + }) }, []); @@ -79,6 +82,8 @@ const Project: React.FC = () => { }) }) setVersions(versions); + }).catch(() => { + console.error("Error fetching version history") }) }, [projectId]) diff --git a/app/src/pages/UserAuth.tsx b/app/src/pages/UserAuth.tsx index 13ca513..4ac7078 100644 --- a/app/src/pages/UserAuth.tsx +++ b/app/src/pages/UserAuth.tsx @@ -43,7 +43,6 @@ const UserAuth: React.FC = () => { const organization = email.split("@")[1].split(".")[0]; try { const res = await signInApi(email, password, organization, fingerprint); - // console.log('res: ', res); if (res.message.message === "login successfull") { setError(""); setOrganization(organization); @@ -57,6 +56,7 @@ const UserAuth: React.FC = () => { try { const projects = await recentlyViewed(organization, res.message.userId); + console.log('projects: ', projects); if (res.message.isShare) { if (Object.values(projects.RecentlyViewed).length > 0) { const firstId = (Object.values(projects?.RecentlyViewed || {})[0] as any)?._id; @@ -72,7 +72,6 @@ const UserAuth: React.FC = () => { } } - } catch (error) { console.error("Error fetching recent projects:", error); } diff --git a/app/src/services/dashboard/createProject.ts b/app/src/services/dashboard/createProject.ts index 5de4b68..fe08526 100644 --- a/app/src/services/dashboard/createProject.ts +++ b/app/src/services/dashboard/createProject.ts @@ -14,7 +14,7 @@ export const createProject = async (projectUuid: string, userId: string, thumbna body: JSON.stringify({ projectUuid, userId, thumbnail, organization, }), }); if (!response.ok) { - throw new Error("Failed to add project"); + console.error("Failed to add project"); } const result = await response.json(); diff --git a/app/src/services/dashboard/deleteProject.ts b/app/src/services/dashboard/deleteProject.ts index 27dc425..4695028 100644 --- a/app/src/services/dashboard/deleteProject.ts +++ b/app/src/services/dashboard/deleteProject.ts @@ -23,7 +23,7 @@ export const deleteProject = async ( ); console.log("response: ", response); if (!response.ok) { - throw new Error("Failed to clearPanel in the zone"); + console.error("Failed to clearPanel in the zone"); } const result = await response.json(); diff --git a/app/src/services/dashboard/deleteTrash.ts b/app/src/services/dashboard/deleteTrash.ts index 6898914..bb2840a 100644 --- a/app/src/services/dashboard/deleteTrash.ts +++ b/app/src/services/dashboard/deleteTrash.ts @@ -18,13 +18,13 @@ export const deleteTrash = async (organization: string, projectId: string) => { console.log("restore: ", response); if (!response.ok) { - throw new Error("Failed to fetch trash data"); + console.error("Failed to fetch trash data"); } const data = await response.json(); return data; } catch (error: any) { console.error("Failed to fetch trash data:", error); - throw new Error(error.message || "Unknown error"); + console.error(error.message || "Unknown error"); } }; diff --git a/app/src/services/dashboard/duplicateProject.ts b/app/src/services/dashboard/duplicateProject.ts index b65e6ec..a77cbd0 100644 --- a/app/src/services/dashboard/duplicateProject.ts +++ b/app/src/services/dashboard/duplicateProject.ts @@ -22,7 +22,7 @@ export const duplicateProject = async ( console.log("response: ", response); if (!response.ok) { - throw new Error("Failed to add project"); + console.error("Failed to add project"); } const result = await response.json(); diff --git a/app/src/services/dashboard/getTrash.ts b/app/src/services/dashboard/getTrash.ts index 052c54a..9e01276 100644 --- a/app/src/services/dashboard/getTrash.ts +++ b/app/src/services/dashboard/getTrash.ts @@ -18,13 +18,13 @@ export const getTrash = async (organization: string) => { ); if (!response.ok) { - throw new Error("Failed to fetch trash data"); + console.error("Failed to fetch trash data"); } const data = await response.json(); return data; } catch (error: any) { console.error("Failed to fetch trash data:", error); - throw new Error(error.message || "Unknown error"); + console.error(error.message || "Unknown error"); } }; diff --git a/app/src/services/dashboard/projectTutorial.ts b/app/src/services/dashboard/projectTutorial.ts index cb262bf..a323b22 100644 --- a/app/src/services/dashboard/projectTutorial.ts +++ b/app/src/services/dashboard/projectTutorial.ts @@ -12,7 +12,7 @@ export const projectTutorial = async () => { // console.log("response: ", response); if (!response.ok) { - throw new Error("Failed to add project"); + console.error("Failed to add project"); } const result = await response.json(); diff --git a/app/src/services/dashboard/recentlyViewed.ts b/app/src/services/dashboard/recentlyViewed.ts index b7649c7..2e78834 100644 --- a/app/src/services/dashboard/recentlyViewed.ts +++ b/app/src/services/dashboard/recentlyViewed.ts @@ -16,7 +16,7 @@ export const recentlyViewed = async (organization: string, userId: string) => { ); if (!response.ok) { - throw new Error("Failed to fetch project"); + console.error("Failed to fetch project"); } return await response.json(); diff --git a/app/src/services/dashboard/restoreTrash.ts b/app/src/services/dashboard/restoreTrash.ts index fdf544d..9e590f1 100644 --- a/app/src/services/dashboard/restoreTrash.ts +++ b/app/src/services/dashboard/restoreTrash.ts @@ -17,7 +17,7 @@ export const restoreTrash = async (organization: string, projectId: string) => { ); if (!response.ok) { - throw new Error("Failed to fetch trash data"); + console.error("Failed to fetch trash data"); } const data = await response.json(); @@ -25,6 +25,6 @@ export const restoreTrash = async (organization: string, projectId: string) => { return data; } catch (error: any) { console.error("Failed to fetch trash data:", error); - throw new Error(error.message || "Unknown error"); + console.error(error.message || "Unknown error"); } }; diff --git a/app/src/services/dashboard/searchProjects.ts b/app/src/services/dashboard/searchProjects.ts index b741e42..0badb4e 100644 --- a/app/src/services/dashboard/searchProjects.ts +++ b/app/src/services/dashboard/searchProjects.ts @@ -21,7 +21,7 @@ export const searchProject = async ( console.log("response: ", response); if (!response.ok) { - throw new Error("Failed to Search project"); + console.error("Failed to Search project"); } const result = await response.json(); diff --git a/app/src/services/dashboard/trashSearchProject.ts b/app/src/services/dashboard/trashSearchProject.ts index 90ae211..24e2b42 100644 --- a/app/src/services/dashboard/trashSearchProject.ts +++ b/app/src/services/dashboard/trashSearchProject.ts @@ -20,7 +20,7 @@ export const trashSearchProject = async ( ); if (!response.ok) { - throw new Error("Failed to add project"); + console.error("Failed to add project"); } const result = await response.json(); diff --git a/app/src/services/dashboard/updateProject.ts b/app/src/services/dashboard/updateProject.ts index afe45b0..a756f57 100644 --- a/app/src/services/dashboard/updateProject.ts +++ b/app/src/services/dashboard/updateProject.ts @@ -32,7 +32,7 @@ export const updateProject = async ( ); if (!response.ok) { - throw new Error("Failed to clearPanel in the zone"); + console.error("Failed to clearPanel in the zone"); } const result = await response.json(); diff --git a/app/src/services/dashboard/viewProject.ts b/app/src/services/dashboard/viewProject.ts index 04095b7..4ff32ba 100644 --- a/app/src/services/dashboard/viewProject.ts +++ b/app/src/services/dashboard/viewProject.ts @@ -20,7 +20,7 @@ export const viewProject = async ( ); if (!response.ok) { - throw new Error("Failed to fetch"); + console.error("Failed to fetch"); } return await response.json(); diff --git a/app/src/services/factoryBuilder/aisle/createAisleApi.ts b/app/src/services/factoryBuilder/aisle/createAisleApi.ts index 1e06c10..dcc6931 100644 --- a/app/src/services/factoryBuilder/aisle/createAisleApi.ts +++ b/app/src/services/factoryBuilder/aisle/createAisleApi.ts @@ -20,7 +20,7 @@ export const createAisleApi = async ( }); if (!response.ok) { - throw new Error("Failed to add project"); + console.error("Failed to add project"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/aisle/deleteAisleApi.ts b/app/src/services/factoryBuilder/aisle/deleteAisleApi.ts index 04907bf..bb90933 100644 --- a/app/src/services/factoryBuilder/aisle/deleteAisleApi.ts +++ b/app/src/services/factoryBuilder/aisle/deleteAisleApi.ts @@ -13,7 +13,7 @@ export const deleteAisleApi = async (aisleUuid: string, projectId: string, versi body: JSON.stringify({ aisleUuid, projectId }), }); if (!response.ok) { - throw new Error("Failed to clearPanel in the zone"); + console.error("Failed to clearPanel in the zone"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/aisle/getAisleApi.ts b/app/src/services/factoryBuilder/aisle/getAisleApi.ts index 1ec9258..b217f48 100644 --- a/app/src/services/factoryBuilder/aisle/getAisleApi.ts +++ b/app/src/services/factoryBuilder/aisle/getAisleApi.ts @@ -17,7 +17,7 @@ export const getAisleApi = async (projectId: string, versionId: string) => { // console.log("response: ", response); if (!response.ok) { - throw new Error("Failed to fetch"); + console.error("Failed to fetch"); } return await response.json(); diff --git a/app/src/services/factoryBuilder/assest/assets/getAssetImages.ts b/app/src/services/factoryBuilder/assest/assets/getAssetImages.ts index a8cdf98..faba588 100644 --- a/app/src/services/factoryBuilder/assest/assets/getAssetImages.ts +++ b/app/src/services/factoryBuilder/assest/assets/getAssetImages.ts @@ -13,7 +13,7 @@ export const getAssetImages = async (cursor?: string) => { ); if (!response.ok) { - throw new Error("Failed to fetch assets"); + console.error("Failed to fetch assets"); } return await response.json(); diff --git a/app/src/services/factoryBuilder/assest/assets/getAssetModel.ts b/app/src/services/factoryBuilder/assest/assets/getAssetModel.ts index 9459cd7..91c33b3 100644 --- a/app/src/services/factoryBuilder/assest/assets/getAssetModel.ts +++ b/app/src/services/factoryBuilder/assest/assets/getAssetModel.ts @@ -13,7 +13,7 @@ export const getAssetModel = async (modelId: string) => { ); if (!response.ok) { - throw new Error("Failed to fetch model"); + console.error("Failed to fetch model"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/assest/floorAsset/deleteFloorItemApi.ts b/app/src/services/factoryBuilder/assest/floorAsset/deleteFloorItemApi.ts index 9cc61ec..eac2bdf 100644 --- a/app/src/services/factoryBuilder/assest/floorAsset/deleteFloorItemApi.ts +++ b/app/src/services/factoryBuilder/assest/floorAsset/deleteFloorItemApi.ts @@ -18,7 +18,7 @@ export const deleteFloorItem = async ( ); if (!response.ok) { - throw new Error("Failed to delete Floor Item"); + console.error("Failed to delete Floor Item"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/assest/floorAsset/getFloorItemsApi.ts b/app/src/services/factoryBuilder/assest/floorAsset/getFloorItemsApi.ts index e17de98..b60026d 100644 --- a/app/src/services/factoryBuilder/assest/floorAsset/getFloorItemsApi.ts +++ b/app/src/services/factoryBuilder/assest/floorAsset/getFloorItemsApi.ts @@ -17,7 +17,7 @@ export const getFloorAssets = async (organization: string, projectId?: string, v // console.log('response: ', response); if (!response.ok) { - throw new Error("Failed to get assets"); + console.error("Failed to get assets"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/assest/floorAsset/setAssetsApi.ts b/app/src/services/factoryBuilder/assest/floorAsset/setAssetsApi.ts index 00a1415..5bc7d3e 100644 --- a/app/src/services/factoryBuilder/assest/floorAsset/setAssetsApi.ts +++ b/app/src/services/factoryBuilder/assest/floorAsset/setAssetsApi.ts @@ -13,7 +13,7 @@ export const setAssetsApi = async (data: any) => { }); if (!response.ok) { - throw new Error("Failed to set or update Floor Item"); + console.error("Failed to set or update Floor Item"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/assest/wallAsset/deleteWallItemApi.ts b/app/src/services/factoryBuilder/assest/wallAsset/deleteWallItemApi.ts index 45e5253..eeae58f 100644 --- a/app/src/services/factoryBuilder/assest/wallAsset/deleteWallItemApi.ts +++ b/app/src/services/factoryBuilder/assest/wallAsset/deleteWallItemApi.ts @@ -18,7 +18,7 @@ export const deleteWallItem = async ( ); if (!response.ok) { - throw new Error("Failed to delete Wall Item"); + console.error("Failed to delete Wall Item"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/assest/wallAsset/getWallItemsApi.ts b/app/src/services/factoryBuilder/assest/wallAsset/getWallItemsApi.ts index fb290f7..250f59a 100644 --- a/app/src/services/factoryBuilder/assest/wallAsset/getWallItemsApi.ts +++ b/app/src/services/factoryBuilder/assest/wallAsset/getWallItemsApi.ts @@ -17,7 +17,7 @@ export const getWallItems = async (organization: string, projectId?: string, ver // console.log('response: ', response); if (!response.ok) { - throw new Error("Failed to get Wall Items"); + console.error("Failed to get Wall Items"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/assest/wallAsset/setWallItemApi.ts b/app/src/services/factoryBuilder/assest/wallAsset/setWallItemApi.ts index 8098ffe..a36a7eb 100644 --- a/app/src/services/factoryBuilder/assest/wallAsset/setWallItemApi.ts +++ b/app/src/services/factoryBuilder/assest/wallAsset/setWallItemApi.ts @@ -31,7 +31,7 @@ export const setWallItem = async ( }); if (!response.ok) { - throw new Error("Failed to set or update Wall Item"); + console.error("Failed to set or update Wall Item"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/camera/getCameraApi.ts b/app/src/services/factoryBuilder/camera/getCameraApi.ts index d63ffeb..b392214 100644 --- a/app/src/services/factoryBuilder/camera/getCameraApi.ts +++ b/app/src/services/factoryBuilder/camera/getCameraApi.ts @@ -16,7 +16,7 @@ export const getCamera = async (organization: string, userId: string, projectId? ); if (!response.ok) { - throw new Error("Failed to get Camera position and target"); + console.error("Failed to get Camera position and target"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/camera/setCameraApi.ts b/app/src/services/factoryBuilder/camera/setCameraApi.ts index 40316d7..3ebacab 100644 --- a/app/src/services/factoryBuilder/camera/setCameraApi.ts +++ b/app/src/services/factoryBuilder/camera/setCameraApi.ts @@ -23,7 +23,7 @@ export const setCamera = async ( }); if (!response.ok) { - throw new Error("Failed to set Camera Position and Target"); + console.error("Failed to set Camera Position and Target"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/collab/getActiveUsers.ts b/app/src/services/factoryBuilder/collab/getActiveUsers.ts index ba7be84..ca503d9 100644 --- a/app/src/services/factoryBuilder/collab/getActiveUsers.ts +++ b/app/src/services/factoryBuilder/collab/getActiveUsers.ts @@ -12,11 +12,11 @@ export default async function getActiveUsersData(organization: string) { }); if (!response.ok) { - throw new Error(`Error: ${response.status} - ${response.statusText}`); + console.error(`Error: ${response.status} - ${response.statusText}`); } if (!response.ok) { - throw new Error("Failed to get active cameras "); + console.error("Failed to get active cameras "); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/collab/getUsersApi.ts b/app/src/services/factoryBuilder/collab/getUsersApi.ts index 964ec0d..151f723 100644 --- a/app/src/services/factoryBuilder/collab/getUsersApi.ts +++ b/app/src/services/factoryBuilder/collab/getUsersApi.ts @@ -12,11 +12,11 @@ export default async function fetchShareUsers(organization: string) { }); if (!response.ok) { - throw new Error(`Error: ${response.status} - ${response.statusText}`); + console.error(`Error: ${response.status} - ${response.statusText}`); } if (!response.ok) { - throw new Error("Failed to get users "); + console.error("Failed to get users "); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/collab/giveCollabAccess.ts b/app/src/services/factoryBuilder/collab/giveCollabAccess.ts index 1c2b747..f96ea87 100644 --- a/app/src/services/factoryBuilder/collab/giveCollabAccess.ts +++ b/app/src/services/factoryBuilder/collab/giveCollabAccess.ts @@ -15,7 +15,7 @@ export default async function giveCollabAccess( }); if (!response.ok) { - throw new Error("Failed to set Camera Position and Target"); + console.error("Failed to set Camera Position and Target"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/comments/addCommentsApi.ts b/app/src/services/factoryBuilder/comments/addCommentsApi.ts index 7189c5e..7e9469a 100644 --- a/app/src/services/factoryBuilder/comments/addCommentsApi.ts +++ b/app/src/services/factoryBuilder/comments/addCommentsApi.ts @@ -29,7 +29,7 @@ export const addCommentsApi = async ( ); console.log('response: ', response); if (!response.ok) { - throw new Error("Failed to add project"); + console.error("Failed to add project"); } const result = await response.json(); @@ -38,9 +38,9 @@ export const addCommentsApi = async ( return result; } catch (error) { if (error instanceof Error) { - throw new Error(error.message); + console.error(error.message); } else { - throw new Error("An unknown error occurred"); + console.error("An unknown error occurred"); } } }; diff --git a/app/src/services/factoryBuilder/comments/createThreadApi.ts b/app/src/services/factoryBuilder/comments/createThreadApi.ts index 8759991..d9bf553 100644 --- a/app/src/services/factoryBuilder/comments/createThreadApi.ts +++ b/app/src/services/factoryBuilder/comments/createThreadApi.ts @@ -19,16 +19,16 @@ export const createThreadApi = async ( body: JSON.stringify({ projectId, state, position, rotation, threadTitle }), }); if (!response.ok) { - throw new Error("Failed to add project"); + console.error("Failed to add project"); } const result = await response.json(); console.log('result: ', result); return result; } catch (error) { if (error instanceof Error) { - throw new Error(error.message); + console.error(error.message); } else { - throw new Error("An unknown error occurred"); + console.error("An unknown error occurred"); } } }; diff --git a/app/src/services/factoryBuilder/comments/deleteCommentApi.ts b/app/src/services/factoryBuilder/comments/deleteCommentApi.ts index 786ee24..4147197 100644 --- a/app/src/services/factoryBuilder/comments/deleteCommentApi.ts +++ b/app/src/services/factoryBuilder/comments/deleteCommentApi.ts @@ -28,16 +28,16 @@ export const deleteCommentApi = async ( ); if (!response.ok) { - throw new Error("Failed to clearPanel in the zone"); + console.error("Failed to clearPanel in the zone"); } const result = await response.json(); return result; } catch (error) { if (error instanceof Error) { - throw new Error(error.message); + console.error(error.message); } else { - throw new Error("An unknown error occurred"); + console.error("An unknown error occurred"); } } }; diff --git a/app/src/services/factoryBuilder/comments/deleteThreadApi.ts b/app/src/services/factoryBuilder/comments/deleteThreadApi.ts index 497c7b1..9a7d2fa 100644 --- a/app/src/services/factoryBuilder/comments/deleteThreadApi.ts +++ b/app/src/services/factoryBuilder/comments/deleteThreadApi.ts @@ -20,16 +20,16 @@ export const deleteThreadApi = async (projectId: string, threadId: string) => { }); if (!response.ok) { - throw new Error("Failed to clearPanel in the zone"); + console.error("Failed to clearPanel in the zone"); } const result = await response.json(); return result; } catch (error) { if (error instanceof Error) { - throw new Error(error.message); + console.error(error.message); } else { - throw new Error("An unknown error occurred"); + console.error("An unknown error occurred"); } } }; diff --git a/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts b/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts index 391c52d..1b07186 100644 --- a/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts +++ b/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts @@ -28,16 +28,16 @@ export const editThreadTitleApi = async ( ); if (!response.ok) { - throw new Error("Failed to clearPanel in the zone"); + console.error("Failed to clearPanel in the zone"); } const result = await response.json(); return result; } catch (error) { if (error instanceof Error) { - throw new Error(error.message); + console.error(error.message); } else { - throw new Error("An unknown error occurred"); + console.error("An unknown error occurred"); } } }; diff --git a/app/src/services/factoryBuilder/comments/getAllThreads.ts b/app/src/services/factoryBuilder/comments/getAllThreads.ts index 7314682..7e9ac0d 100644 --- a/app/src/services/factoryBuilder/comments/getAllThreads.ts +++ b/app/src/services/factoryBuilder/comments/getAllThreads.ts @@ -14,21 +14,22 @@ export const getAllThreads = async (projectId: string) => { }, } ); - + if (!response.ok) { - throw new Error("Failed to get assets"); + console.error("Failed to get assets"); + return; } const result = await response.json(); - // console.log('result: ', result); + console.log('result: ', result); return result; } catch (error) { echo.error("Failed to get floor asset"); if (error instanceof Error) { - throw new Error(error.message); + console.error(error.message); } else { - throw new Error("An unknown error occurred"); + console.error("An unknown error occurred"); } } }; diff --git a/app/src/services/factoryBuilder/environment/findEnvironment.ts b/app/src/services/factoryBuilder/environment/findEnvironment.ts index 3a6ead1..e6f802d 100644 --- a/app/src/services/factoryBuilder/environment/findEnvironment.ts +++ b/app/src/services/factoryBuilder/environment/findEnvironment.ts @@ -18,7 +18,7 @@ export const findEnvironment = async (organization: string, userId: string, proj if (!response.ok) { - throw new Error("Failed to get wall and roof visibility"); + console.error("Failed to get wall and roof visibility"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/environment/setEnvironment.ts b/app/src/services/factoryBuilder/environment/setEnvironment.ts index 5b495fd..234fde7 100644 --- a/app/src/services/factoryBuilder/environment/setEnvironment.ts +++ b/app/src/services/factoryBuilder/environment/setEnvironment.ts @@ -37,7 +37,7 @@ export const setEnvironment = async ( // console.log('responseenv: ', response); if (!response.ok) { - throw new Error("Failed to set wall and roof visibility"); + console.error("Failed to set wall and roof visibility"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/lines/deleteLayerApi.ts b/app/src/services/factoryBuilder/lines/deleteLayerApi.ts index 29ae2cd..32793fc 100644 --- a/app/src/services/factoryBuilder/lines/deleteLayerApi.ts +++ b/app/src/services/factoryBuilder/lines/deleteLayerApi.ts @@ -11,7 +11,7 @@ export const deleteLayer = async (organization: string, layer: number) => { }); if (!response.ok) { - throw new Error("Failed to delete line"); + console.error("Failed to delete line"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/lines/deleteLineApi.ts b/app/src/services/factoryBuilder/lines/deleteLineApi.ts index 7aba3cd..815309a 100644 --- a/app/src/services/factoryBuilder/lines/deleteLineApi.ts +++ b/app/src/services/factoryBuilder/lines/deleteLineApi.ts @@ -11,7 +11,7 @@ export const deleteLineApi = async (organization: string, line: Object) => { }); if (!response.ok) { - throw new Error("Failed to delete line"); + console.error("Failed to delete line"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/lines/deletePointApi.ts b/app/src/services/factoryBuilder/lines/deletePointApi.ts index 9d63aa9..3a3db64 100644 --- a/app/src/services/factoryBuilder/lines/deletePointApi.ts +++ b/app/src/services/factoryBuilder/lines/deletePointApi.ts @@ -11,7 +11,7 @@ export const deletePointApi = async (organization: string, uuid: string) => { }); if (!response.ok) { - throw new Error("Failed to delete point"); + console.error("Failed to delete point"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/lines/getLinesApi.ts b/app/src/services/factoryBuilder/lines/getLinesApi.ts index 4d8f962..c1e90aa 100644 --- a/app/src/services/factoryBuilder/lines/getLinesApi.ts +++ b/app/src/services/factoryBuilder/lines/getLinesApi.ts @@ -16,7 +16,7 @@ export const getLines = async (organization: string, projectId?: string, version ); if (!response.ok) { - throw new Error("Failed to get Lines"); + console.error("Failed to get Lines"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/lines/setLineApi.ts b/app/src/services/factoryBuilder/lines/setLineApi.ts index e0ab043..db16e79 100644 --- a/app/src/services/factoryBuilder/lines/setLineApi.ts +++ b/app/src/services/factoryBuilder/lines/setLineApi.ts @@ -16,7 +16,7 @@ export const setLine = async ( }); if (!response.ok) { - throw new Error("Failed to set line"); + console.error("Failed to set line"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/lines/updatePointApi.ts b/app/src/services/factoryBuilder/lines/updatePointApi.ts index 3392d89..32be76c 100644 --- a/app/src/services/factoryBuilder/lines/updatePointApi.ts +++ b/app/src/services/factoryBuilder/lines/updatePointApi.ts @@ -15,7 +15,7 @@ export const updatePoint = async ( }); if (!response.ok) { - throw new Error("Failed to update point"); + console.error("Failed to update point"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/signInSignUp/signUpApi.ts b/app/src/services/factoryBuilder/signInSignUp/signUpApi.ts index 73e1a70..91db59c 100644 --- a/app/src/services/factoryBuilder/signInSignUp/signUpApi.ts +++ b/app/src/services/factoryBuilder/signInSignUp/signUpApi.ts @@ -14,7 +14,7 @@ export const signUpApi = async ( }); if (!response.ok) { - throw new Error("Failed to signUpApi"); + console.error("Failed to signUpApi"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/versionControl/addVersionApi.ts b/app/src/services/factoryBuilder/versionControl/addVersionApi.ts index 0f9e81c..8603589 100644 --- a/app/src/services/factoryBuilder/versionControl/addVersionApi.ts +++ b/app/src/services/factoryBuilder/versionControl/addVersionApi.ts @@ -23,7 +23,7 @@ export const createVersionApi = async (projectId: string, createdBy: string, hie ); if (!response.ok) { - throw new Error("Failed to create Version History"); + console.error("Failed to create Version History"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/versionControl/getVersionDataApi.ts b/app/src/services/factoryBuilder/versionControl/getVersionDataApi.ts index e0a56ad..82cbb0a 100644 --- a/app/src/services/factoryBuilder/versionControl/getVersionDataApi.ts +++ b/app/src/services/factoryBuilder/versionControl/getVersionDataApi.ts @@ -16,7 +16,7 @@ export const getVersionDataApi = async (projectId: string, versionId: string) => ); if (!response.ok) { - throw new Error("Failed to get Version Data"); + console.error("Failed to get Version Data"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/versionControl/getVersionHistoryApi.ts b/app/src/services/factoryBuilder/versionControl/getVersionHistoryApi.ts index 08fa982..c554b98 100644 --- a/app/src/services/factoryBuilder/versionControl/getVersionHistoryApi.ts +++ b/app/src/services/factoryBuilder/versionControl/getVersionHistoryApi.ts @@ -16,7 +16,7 @@ export const getVersionHistoryApi = async (projectId: string, page?: number, lim ); if (!response.ok) { - throw new Error("Failed to get Version History"); + console.error("Failed to get Version History"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/zones/deleteZoneApi.ts b/app/src/services/factoryBuilder/zones/deleteZoneApi.ts index 4d921a1..9e96fe0 100644 --- a/app/src/services/factoryBuilder/zones/deleteZoneApi.ts +++ b/app/src/services/factoryBuilder/zones/deleteZoneApi.ts @@ -15,7 +15,7 @@ export const deleteZonesApi = async ( }); if (!response.ok) { - throw new Error("Failed to delete zone"); + console.error("Failed to delete zone"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/zones/getZonesApi.ts b/app/src/services/factoryBuilder/zones/getZonesApi.ts index acbf612..4a6c9f1 100644 --- a/app/src/services/factoryBuilder/zones/getZonesApi.ts +++ b/app/src/services/factoryBuilder/zones/getZonesApi.ts @@ -17,7 +17,7 @@ export const getZonesApi = async (organization: string, projectId?: string, vers ); if (!response.ok) { - throw new Error("Failed to get Zones"); + console.error("Failed to get Zones"); } const result = await response.json(); diff --git a/app/src/services/factoryBuilder/zones/setZonesApi.ts b/app/src/services/factoryBuilder/zones/setZonesApi.ts index 5ba7ea3..bb29c7b 100644 --- a/app/src/services/factoryBuilder/zones/setZonesApi.ts +++ b/app/src/services/factoryBuilder/zones/setZonesApi.ts @@ -15,7 +15,7 @@ export const setZonesApi = async ( }); if (!response.ok) { - throw new Error("Failed to set zone"); + console.error("Failed to set zone"); } const result = await response.json(); diff --git a/app/src/services/marketplace/fetchAssetDetails.ts b/app/src/services/marketplace/fetchAssetDetails.ts index ea0731e..4d96adf 100644 --- a/app/src/services/marketplace/fetchAssetDetails.ts +++ b/app/src/services/marketplace/fetchAssetDetails.ts @@ -11,7 +11,7 @@ export const getAssetDetails = async (filename: string) => { }); if (!response.ok) { - throw new Error("Failed to fetch asset details"); + console.error("Failed to fetch asset details"); } const result = await response.json(); diff --git a/app/src/services/marketplace/fetchAssets.ts b/app/src/services/marketplace/fetchAssets.ts index f2dd243..1722f18 100644 --- a/app/src/services/marketplace/fetchAssets.ts +++ b/app/src/services/marketplace/fetchAssets.ts @@ -3,7 +3,7 @@ export const fetchAssets = async () => { try { const response = await fetch(`${BackEnd_url}/api/v1/getAllAssets`); if (!response.ok) { - throw new Error("Network response was not ok"); + console.error("Network response was not ok"); } const result = await response.json(); // const last10Assets = result.slice(-10); diff --git a/app/src/services/marketplace/fetchGltfUrl.ts b/app/src/services/marketplace/fetchGltfUrl.ts index b03cccd..23410f2 100644 --- a/app/src/services/marketplace/fetchGltfUrl.ts +++ b/app/src/services/marketplace/fetchGltfUrl.ts @@ -13,7 +13,7 @@ export const fetchGltfUrl = async (filename: string, AssetID: string) => { ); if (!response.ok) { - throw new Error("Failed to fetch asset details"); + console.error("Failed to fetch asset details"); } const result = await response.json(); diff --git a/app/src/services/marketplace/getSortedAssets.ts b/app/src/services/marketplace/getSortedAssets.ts index fd4be5c..7c446c0 100644 --- a/app/src/services/marketplace/getSortedAssets.ts +++ b/app/src/services/marketplace/getSortedAssets.ts @@ -12,7 +12,7 @@ export const getSortedAssets = async (category: any, orders: any) => { ); if (!response.ok) { - throw new Error(`Error: ${response.statusText}`); + console.error(`Error: ${response.statusText}`); } const result = await response.json(); diff --git a/app/src/services/simulation/products/UpsertProductOrEventApi.ts b/app/src/services/simulation/products/UpsertProductOrEventApi.ts index 058db57..fb80ae5 100644 --- a/app/src/services/simulation/products/UpsertProductOrEventApi.ts +++ b/app/src/services/simulation/products/UpsertProductOrEventApi.ts @@ -17,7 +17,7 @@ export const upsertProductOrEventApi = async (body: any) => { ); if (!response.ok) { - throw new Error("Failed to add product or event"); + console.error("Failed to add product or event"); } const result = await response.json(); diff --git a/app/src/services/simulation/products/deleteEventDataApi.ts b/app/src/services/simulation/products/deleteEventDataApi.ts index 7bf8554..ed06044 100644 --- a/app/src/services/simulation/products/deleteEventDataApi.ts +++ b/app/src/services/simulation/products/deleteEventDataApi.ts @@ -17,7 +17,7 @@ export const deleteEventDataApi = async (body: any) => { ); if (!response.ok) { - throw new Error("Failed to delete event data"); + console.error("Failed to delete event data"); } const result = await response.json(); diff --git a/app/src/services/simulation/products/deleteProductApi.ts b/app/src/services/simulation/products/deleteProductApi.ts index 4e55282..734509e 100644 --- a/app/src/services/simulation/products/deleteProductApi.ts +++ b/app/src/services/simulation/products/deleteProductApi.ts @@ -17,7 +17,7 @@ export const deleteProductApi = async (body: any) => { ); if (!response.ok) { - throw new Error("Failed to delete product data"); + console.error("Failed to delete product data"); } const result = await response.json(); diff --git a/app/src/services/simulation/products/getProductApi.ts b/app/src/services/simulation/products/getProductApi.ts index 53edccb..501f5a7 100644 --- a/app/src/services/simulation/products/getProductApi.ts +++ b/app/src/services/simulation/products/getProductApi.ts @@ -19,7 +19,7 @@ export const getProductApi = async ( ); if (!response.ok) { - throw new Error("Failed to fetch product data"); + console.error("Failed to fetch product data"); } const result = await response.json(); diff --git a/app/src/services/simulation/products/getallProductsApi.ts b/app/src/services/simulation/products/getallProductsApi.ts index 05ae340..31bfcf5 100644 --- a/app/src/services/simulation/products/getallProductsApi.ts +++ b/app/src/services/simulation/products/getallProductsApi.ts @@ -16,7 +16,7 @@ export const getAllProductsApi = async (projectId: string, versionId: string) => ); if (!response.ok) { - throw new Error("Failed to fetch all products data"); + console.error("Failed to fetch all products data"); } const result = await response.json(); diff --git a/app/src/services/simulation/products/renameProductApi.ts b/app/src/services/simulation/products/renameProductApi.ts index 038ba63..04719f4 100644 --- a/app/src/services/simulation/products/renameProductApi.ts +++ b/app/src/services/simulation/products/renameProductApi.ts @@ -19,7 +19,7 @@ export const renameProductApi = async (body: { }); if (!response.ok) { - throw new Error("Failed to rename product"); + console.error("Failed to rename product"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/add3dWidget.ts b/app/src/services/visulization/zone/add3dWidget.ts index 0dad631..bf69c48 100644 --- a/app/src/services/visulization/zone/add3dWidget.ts +++ b/app/src/services/visulization/zone/add3dWidget.ts @@ -18,7 +18,7 @@ export const adding3dWidgets = async ( }); if (!response.ok) { - throw new Error("Failed to add 3dwidget in the zone"); + console.error("Failed to add 3dwidget in the zone"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/addFloatingWidgets.ts b/app/src/services/visulization/zone/addFloatingWidgets.ts index fb93ec6..2fb9418 100644 --- a/app/src/services/visulization/zone/addFloatingWidgets.ts +++ b/app/src/services/visulization/zone/addFloatingWidgets.ts @@ -24,7 +24,7 @@ export const addingFloatingWidgets = async ( ); if (!response.ok) { - throw new Error("Failed to add Floatingwidget in the zone"); + console.error("Failed to add Floatingwidget in the zone"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/addWidgets.ts b/app/src/services/visulization/zone/addWidgets.ts index f325311..b196930 100644 --- a/app/src/services/visulization/zone/addWidgets.ts +++ b/app/src/services/visulization/zone/addWidgets.ts @@ -21,7 +21,7 @@ export const addingWidgets = async ( }); if (!response.ok) { - throw new Error("Failed to add widget in the zone"); + console.error("Failed to add widget in the zone"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/clearPanel.ts b/app/src/services/visulization/zone/clearPanel.ts index 5b60e4a..7c747ec 100644 --- a/app/src/services/visulization/zone/clearPanel.ts +++ b/app/src/services/visulization/zone/clearPanel.ts @@ -18,7 +18,7 @@ export const clearPanel = async ( }); if (!response.ok) { - throw new Error("Failed to clearPanel in the zone"); + console.error("Failed to clearPanel in the zone"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/delete3dWidget.ts b/app/src/services/visulization/zone/delete3dWidget.ts index 6fb0e16..8003be5 100644 --- a/app/src/services/visulization/zone/delete3dWidget.ts +++ b/app/src/services/visulization/zone/delete3dWidget.ts @@ -22,7 +22,7 @@ export const delete3dWidgetApi = async ( ); if (!response.ok) { - throw new Error("Failed to delete floating widget in the zone"); + console.error("Failed to delete floating widget in the zone"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/deleteFloatingWidget.ts b/app/src/services/visulization/zone/deleteFloatingWidget.ts index b3a624b..b7198ea 100644 --- a/app/src/services/visulization/zone/deleteFloatingWidget.ts +++ b/app/src/services/visulization/zone/deleteFloatingWidget.ts @@ -21,7 +21,7 @@ export const deleteFloatingWidgetApi = async ( ); if (!response.ok) { - throw new Error("Failed to delete floating widget in the zone"); + console.error("Failed to delete floating widget in the zone"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/deletePanel.ts b/app/src/services/visulization/zone/deletePanel.ts index cf55888..0d5807a 100644 --- a/app/src/services/visulization/zone/deletePanel.ts +++ b/app/src/services/visulization/zone/deletePanel.ts @@ -19,7 +19,7 @@ export const deletePanelApi = async ( }); if (!response.ok) { - throw new Error("Failed to delete widget in the zone"); + console.error("Failed to delete widget in the zone"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/deleteTemplate.ts b/app/src/services/visulization/zone/deleteTemplate.ts index adaf2af..7d42dfe 100644 --- a/app/src/services/visulization/zone/deleteTemplate.ts +++ b/app/src/services/visulization/zone/deleteTemplate.ts @@ -20,7 +20,7 @@ export const deleteTemplateApi = async ( ); if (!response.ok) { - throw new Error("Failed to delete template "); + console.error("Failed to delete template "); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/deleteWidgetApi.ts b/app/src/services/visulization/zone/deleteWidgetApi.ts index d7ea84f..fb143f3 100644 --- a/app/src/services/visulization/zone/deleteWidgetApi.ts +++ b/app/src/services/visulization/zone/deleteWidgetApi.ts @@ -19,7 +19,7 @@ export const deleteWidgetApi = async ( }); if (!response.ok) { - throw new Error("Failed to delete widget in the zone"); + console.error("Failed to delete widget in the zone"); } const result = await response.json(); return result; diff --git a/app/src/services/visulization/zone/duplicateWidget.ts b/app/src/services/visulization/zone/duplicateWidget.ts index cf6af04..9612b43 100644 --- a/app/src/services/visulization/zone/duplicateWidget.ts +++ b/app/src/services/visulization/zone/duplicateWidget.ts @@ -18,7 +18,7 @@ export const duplicateWidgetApi = async ( }); if (!response.ok) { - throw new Error("Failed to duplicate widget in the zone"); + console.error("Failed to duplicate widget in the zone"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/get3dWidgetData.ts b/app/src/services/visulization/zone/get3dWidgetData.ts index 9097e1e..c15a703 100644 --- a/app/src/services/visulization/zone/get3dWidgetData.ts +++ b/app/src/services/visulization/zone/get3dWidgetData.ts @@ -22,7 +22,7 @@ export const get3dWidgetZoneData = async ( } ); if (!response.ok) { - throw new Error("Failed to fetch Zone3dWidgetData"); + console.error("Failed to fetch Zone3dWidgetData"); } return await response.json(); diff --git a/app/src/services/visulization/zone/getFloatingData.ts b/app/src/services/visulization/zone/getFloatingData.ts index cecbb17..73339cb 100644 --- a/app/src/services/visulization/zone/getFloatingData.ts +++ b/app/src/services/visulization/zone/getFloatingData.ts @@ -21,7 +21,7 @@ export const getFloatingZoneData = async ( ); if (!response.ok) { - throw new Error("Failed to fetch ZoneFloatingData"); + console.error("Failed to fetch ZoneFloatingData"); } return await response.json(); diff --git a/app/src/services/visulization/zone/getSelect2dZoneData.ts b/app/src/services/visulization/zone/getSelect2dZoneData.ts index 33e3100..f5803ca 100644 --- a/app/src/services/visulization/zone/getSelect2dZoneData.ts +++ b/app/src/services/visulization/zone/getSelect2dZoneData.ts @@ -17,7 +17,7 @@ export const getSelect2dZoneData = async (zoneUuid?: string, organization?: stri ); if (!response.ok) { - throw new Error("Failed to fetch zoneDatas"); + console.error("Failed to fetch zoneDatas"); } return await response.json(); diff --git a/app/src/services/visulization/zone/getTemplate.ts b/app/src/services/visulization/zone/getTemplate.ts index 1cf630a..bd00cab 100644 --- a/app/src/services/visulization/zone/getTemplate.ts +++ b/app/src/services/visulization/zone/getTemplate.ts @@ -16,7 +16,7 @@ export const getTemplateData = async (organization?: string, projectId?: string, ); if (!response.ok) { - throw new Error("Failed to fetch ZoneFloatingData"); + console.error("Failed to fetch ZoneFloatingData"); } return await response.json(); diff --git a/app/src/services/visulization/zone/getZoneData.ts b/app/src/services/visulization/zone/getZoneData.ts index 7270bf3..5887af9 100644 --- a/app/src/services/visulization/zone/getZoneData.ts +++ b/app/src/services/visulization/zone/getZoneData.ts @@ -15,7 +15,7 @@ export const getZone2dData = async (organization?: string, projectId?: string, v } ); if (!response.ok) { - throw new Error("Failed to fetch zoneDatas"); + console.error("Failed to fetch zoneDatas"); } return await response.json(); diff --git a/app/src/services/visulization/zone/getZones.ts b/app/src/services/visulization/zone/getZones.ts index ce33cd6..19bf10f 100644 --- a/app/src/services/visulization/zone/getZones.ts +++ b/app/src/services/visulization/zone/getZones.ts @@ -17,7 +17,7 @@ export const getZoneData = async (zoneUuid: string, organization: string, projec ); if (!response.ok) { - throw new Error("Failed to fetch zoneData"); + console.error("Failed to fetch zoneData"); } return await response.json(); diff --git a/app/src/services/visulization/zone/loadTemplate.ts b/app/src/services/visulization/zone/loadTemplate.ts index 16c9476..2991a74 100644 --- a/app/src/services/visulization/zone/loadTemplate.ts +++ b/app/src/services/visulization/zone/loadTemplate.ts @@ -21,7 +21,7 @@ export const loadTempleteApi = async ( ); if (!response.ok) { - throw new Error("Failed to load Template in the zone"); + console.error("Failed to load Template in the zone"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/lockPanel.ts b/app/src/services/visulization/zone/lockPanel.ts index 046c484..a8b9513 100644 --- a/app/src/services/visulization/zone/lockPanel.ts +++ b/app/src/services/visulization/zone/lockPanel.ts @@ -18,7 +18,7 @@ export const lockPanel = async ( ); if (!response.ok) { - throw new Error("Failed to Lock Panel in the zone"); + console.error("Failed to Lock Panel in the zone"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/panel.ts b/app/src/services/visulization/zone/panel.ts index b083df4..1ff3ffc 100644 --- a/app/src/services/visulization/zone/panel.ts +++ b/app/src/services/visulization/zone/panel.ts @@ -19,7 +19,7 @@ export const panelData = async ( }); if (!response.ok) { - throw new Error("Failed to add panelOrder for Zone"); + console.error("Failed to add panelOrder for Zone"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/saveTempleteApi.ts b/app/src/services/visulization/zone/saveTempleteApi.ts index 79c7a33..3c9d8da 100644 --- a/app/src/services/visulization/zone/saveTempleteApi.ts +++ b/app/src/services/visulization/zone/saveTempleteApi.ts @@ -14,7 +14,7 @@ export const saveTemplateApi = async (organization: string, template: {}) => { }); if (!response.ok) { - throw new Error("Failed to save template zone"); + console.error("Failed to save template zone"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/update3dWidget.ts b/app/src/services/visulization/zone/update3dWidget.ts index dfbf855..9f7abf9 100644 --- a/app/src/services/visulization/zone/update3dWidget.ts +++ b/app/src/services/visulization/zone/update3dWidget.ts @@ -29,7 +29,7 @@ export const update3dWidget = async ( if (!response.ok) { echo.error("Failed to update 3d widget"); - throw new Error("Failed to add 3dwidget in the zone"); + console.error("Failed to add 3dwidget in the zone"); } const result = await response.json(); @@ -70,7 +70,7 @@ export const update3dWidgetRotation = async ( ); if (!response.ok) { - throw new Error("Failed to add 3dwidget in the zone"); + console.error("Failed to add 3dwidget in the zone"); } const result = await response.json(); diff --git a/app/src/services/visulization/zone/zoneCameraUpdation.ts b/app/src/services/visulization/zone/zoneCameraUpdation.ts index d74a38d..1550d75 100644 --- a/app/src/services/visulization/zone/zoneCameraUpdation.ts +++ b/app/src/services/visulization/zone/zoneCameraUpdation.ts @@ -15,7 +15,7 @@ export const zoneCameraUpdate = async (zoneData: {}, organization: string, proje }); if (!response.ok) { - throw new Error("Failed to update camera position in the zone"); + console.error("Failed to update camera position in the zone"); } const result = await response.json(); From a5afcd5757376567539e2f86afa02b531a4cdde1 Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Tue, 24 Jun 2025 11:04:56 +0530 Subject: [PATCH 5/8] Implement resetStates hook and integrate it into Header component for state management --- .../components/layout/sidebarLeft/Header.tsx | 11 +++++++- app/src/hooks/temp.md | 0 app/src/hooks/useResetStates.ts | 26 +++++++++++++++++++ app/src/modules/scene/sceneContext.tsx | 15 +++++++++-- app/src/store/builder/useAisleStore.ts | 7 +++++ 5 files changed, 56 insertions(+), 3 deletions(-) delete mode 100644 app/src/hooks/temp.md create mode 100644 app/src/hooks/useResetStates.ts diff --git a/app/src/components/layout/sidebarLeft/Header.tsx b/app/src/components/layout/sidebarLeft/Header.tsx index a9759de..edcd2e8 100644 --- a/app/src/components/layout/sidebarLeft/Header.tsx +++ b/app/src/components/layout/sidebarLeft/Header.tsx @@ -5,16 +5,25 @@ import FileMenu from "../../ui/FileMenu"; import { useToggleStore } from "../../../store/useUIToggleStore"; import useModuleStore from "../../../store/useModuleStore"; import { useNavigate } from "react-router-dom"; +import useRestStates from "../../../hooks/useResetStates"; const Header: React.FC = () => { const { toggleUILeft, toggleUIRight, setToggleUI } = useToggleStore(); const { activeModule } = useModuleStore(); const navigate = useNavigate(); + const { resetStates } = useRestStates(); return (
-
diff --git a/app/src/hooks/temp.md b/app/src/hooks/temp.md deleted file mode 100644 index e69de29..0000000 diff --git a/app/src/hooks/useResetStates.ts b/app/src/hooks/useResetStates.ts new file mode 100644 index 0000000..87bef11 --- /dev/null +++ b/app/src/hooks/useResetStates.ts @@ -0,0 +1,26 @@ +import { useVersionContext } from "../modules/builder/version/versionContext"; +import { useSceneContext } from "../modules/scene/sceneContext"; +import { useProductContext } from "../modules/simulation/products/productContext"; +import { useVersionHistoryStore } from "../store/builder/useVersionHistoryStore"; + +const useRestStates = () => { + const { selectedVersionStore } = useVersionContext(); + const { clearSelectedVersion } = selectedVersionStore(); + const { selectedProductStore } = useProductContext(); + const { clearSelectedProduct } = selectedProductStore(); + const { clearVersions } = useVersionHistoryStore(); + const { clearStores } = useSceneContext(); + + const resetStates = () => { + clearSelectedVersion(); + clearSelectedProduct(); + clearVersions(); + clearStores(); + }; + + return { + resetStates, + }; +}; + +export default useRestStates; \ No newline at end of file diff --git a/app/src/modules/scene/sceneContext.tsx b/app/src/modules/scene/sceneContext.tsx index 8d742ed..a339ddf 100644 --- a/app/src/modules/scene/sceneContext.tsx +++ b/app/src/modules/scene/sceneContext.tsx @@ -28,6 +28,8 @@ type SceneContextValue = { vehicleStore: VehicleStoreType; storageUnitStore: StorageUnitStoreType; + clearStores: () => void; + layout: 'Main Layout' | 'Comparison Layout'; }; @@ -55,8 +57,17 @@ export function SceneProvider({ const storageUnitStore = useMemo(() => createStorageUnitStore(), []); const clearStores = useMemo(() => () => { - assetStore().clearAssets(); - }, [assetStore]); + assetStore.getState().clearAssets(); + aisleStore.getState().clearAisles(); + eventStore.getState().clearEvents(); + productStore.getState().clearProducts(); + materialStore.getState().clearMaterials(); + armBotStore.getState().clearArmBots(); + machineStore.getState().clearMachines(); + conveyorStore.getState().clearConveyors(); + vehicleStore.getState().clearVehicles(); + storageUnitStore.getState().clearStorageUnits(); + }, [assetStore, aisleStore, eventStore, productStore, materialStore, armBotStore, machineStore, conveyorStore, vehicleStore, storageUnitStore]); const contextValue = useMemo(() => ( { diff --git a/app/src/store/builder/useAisleStore.ts b/app/src/store/builder/useAisleStore.ts index 35c79df..4e9e6ad 100644 --- a/app/src/store/builder/useAisleStore.ts +++ b/app/src/store/builder/useAisleStore.ts @@ -8,6 +8,7 @@ interface AisleStore { updateAisle: (uuid: string, updated: Partial) => void; removeAisle: (uuid: string) => void; removePoint: (uuid: string) => Aisles; + clearAisles: () => void; setPosition: ( pointUuid: string, position: [number, number, number] @@ -92,6 +93,12 @@ export const createAisleStore = () => { return removedAisles; }, + clearAisles: () => { + set((state) => { + state.aisles = []; + }) + }, + setPosition: (pointUuid, position) => { let updatedAisle: Aisle | undefined; set((state) => { From 3fe52e3e7c9e131be42564bfab27e48af6bd5a1b Mon Sep 17 00:00:00 2001 From: Poovizhi99 Date: Tue, 24 Jun 2025 11:56:26 +0530 Subject: [PATCH 6/8] Add versioning support to collaboration features and API calls - Adjust logic in socket responses to handle versioning for comments and threads. --- .../components/layout/scenes/MainScene.tsx | 4 ++ .../components/ui/collaboration/Messages.tsx | 40 +++++++++------- .../ui/collaboration/ThreadChat.tsx | 37 +++++++++----- .../comments/instances/commentInstances.tsx | 9 ++-- .../socket/threadSocketResponses.dev.tsx | 48 ++++++++++++------- app/src/pages/Project.tsx | 5 +- .../comments/deleteThreadApi.ts | 7 ++- .../factoryBuilder/comments/getAllThreads.ts | 6 +-- 8 files changed, 99 insertions(+), 57 deletions(-) diff --git a/app/src/components/layout/scenes/MainScene.tsx b/app/src/components/layout/scenes/MainScene.tsx index eebab29..25d579f 100644 --- a/app/src/components/layout/scenes/MainScene.tsx +++ b/app/src/components/layout/scenes/MainScene.tsx @@ -3,6 +3,7 @@ import { useLoadingProgress, useRenameModeStore, useSaveVersion, + useSelectedComment, useSelectedFloorItem, useSocketStore, useWidgetSubOption, @@ -39,6 +40,7 @@ import { useVersionHistoryStore } from "../../../store/builder/useVersionHistory import { useVersionContext } from "../../../modules/builder/version/versionContext"; import VersionSaved from "../sidebarRight/versionHisory/VersionSaved"; import Footer from "../../footer/Footer"; +import ThreadChat from "../../ui/collaboration/ThreadChat"; function MainScene() { const { setMainProduct } = useMainProduct(); @@ -64,6 +66,7 @@ function MainScene() { const { versionHistory } = useVersionHistoryStore(); const { selectedVersionStore } = useVersionContext(); const { selectedVersion, setSelectedVersion } = selectedVersionStore(); + const { selectedComment, commentPositionState } = useSelectedComment(); useEffect(() => { if (activeModule !== 'simulation') { @@ -185,6 +188,7 @@ function MainScene() { {activeModule !== "market" && !selectedUser &&
} + {(commentPositionState !== null || selectedComment !== null) && } ); diff --git a/app/src/components/ui/collaboration/Messages.tsx b/app/src/components/ui/collaboration/Messages.tsx index 86c3d69..a182ad8 100644 --- a/app/src/components/ui/collaboration/Messages.tsx +++ b/app/src/components/ui/collaboration/Messages.tsx @@ -10,6 +10,7 @@ import { useCommentStore } from "../../../store/collaboration/useCommentStore"; import { useSelectedComment, useSocketStore } from "../../../store/builder/store"; import { getRelativeTime } from "./function/getRelativeTime"; import { editThreadTitleApi } from "../../../services/factoryBuilder/comments/editThreadTitleApi"; +import { useVersionContext } from "../../../modules/builder/version/versionContext"; interface MessageProps { @@ -34,8 +35,9 @@ const Messages: React.FC = ({ val, i, setMessages, mode, setIsEdit const { threadSocket } = useSocketStore(); const { userName, userId, organization } = getUserData(); const [isEditComment, setIsEditComment] = useState(false) - const { selectedComment, setCommentPositionState } = useSelectedComment(); + const { selectedVersionStore } = useVersionContext(); + const { selectedVersion } = selectedVersionStore(); // input const [value, setValue] = useState( @@ -59,11 +61,11 @@ const Messages: React.FC = ({ val, i, setMessages, mode, setIsEdit const handleSaveAction = async () => { - if (!projectId) return + if (!projectId || !selectedVersion) return if (isEditableThread && editedThread) { try { - // const editThreadTitle = await editThreadTitleApi(projectId, (val as CommentSchema).threadId, value) + // const editThreadTitle = await editThreadTitleApi(projectId, (val as CommentSchema).threadId, value, selectedVersion?.versionId || "") // if (editThreadTitle.message == "ThreadTitle updated Successfully") { // const editedThread: CommentSchema = { // state: 'active', @@ -74,7 +76,8 @@ const Messages: React.FC = ({ val, i, setMessages, mode, setIsEdit // lastUpdatedAt: new Date().toISOString(), // position: editThreadTitle.data.position, // rotation: [0, 0, 0], - // comments: [] + // comments: [], + // versionId: selectedVersion?.versionId || "" // } // updateComment((val as CommentSchema).threadId, editedThread) // } @@ -84,17 +87,17 @@ const Messages: React.FC = ({ val, i, setMessages, mode, setIsEdit userId, threadTitle: value, organization, - threadId: (val as CommentSchema).threadId + threadId: (val as CommentSchema).threadId || selectedComment.threadId, + versionId: selectedVersion?.versionId || "" } threadSocket.emit('v1:thread:updateTitle', threadEdit) } catch { } } else { - if (mode === "edit") { try { - // const editComments = await addCommentsApi(projectId, value, selectedComment?.threadId, (val as Reply).replyId) + // const editComments = await addCommentsApi(projectId, value, selectedComment?.threadId, (val as Reply).replyId, selectedVersion?.versionId || "") // // const commentData = { // replyId: `${editComments.data?.replyId}`, @@ -102,6 +105,7 @@ const Messages: React.FC = ({ val, i, setMessages, mode, setIsEdit // createdAt: getRelativeTime(editComments.data?.createdAt), // lastUpdatedAt: "2 hrs ago", // comment: value, + // versionId: selectedVersion?.versionId || "" // } // updateReply((val as CommentSchema).threadId, (val as Reply)?.replyId, commentData); @@ -114,7 +118,8 @@ const Messages: React.FC = ({ val, i, setMessages, mode, setIsEdit comment: value, organization, threadId: selectedComment?.threadId, - commentId: (val as Reply).replyId ?? "" + commentId: (val as Reply).replyId ?? "", + versionId: selectedVersion?.versionId || "" } @@ -133,10 +138,10 @@ const Messages: React.FC = ({ val, i, setMessages, mode, setIsEdit } const handleDeleteAction = async (replyID: any) => { - if (!projectId) return + if (!projectId || !selectedVersion) return setOpenOptions(false); try { - // const deletedComment = await deleteCommentApi(projectId, selectedComment?.threadId, (val as Reply).replyId) + // const deletedComment = await deleteCommentApi(projectId, selectedComment?.threadId, (val as Reply).replyId , selectedVersion?.versionId || "") // // if (deletedComment === "'Thread comment deleted Successfully'") { // setMessages && setMessages(prev => prev.filter(message => message.replyId !== replyID)); @@ -151,13 +156,16 @@ const Messages: React.FC = ({ val, i, setMessages, mode, setIsEdit userId, commentId: (val as Reply).replyId, organization, - threadId: selectedComment?.threadId + threadId: selectedComment?.threadId, + versionId: selectedVersion?.versionId || "" } - - - setMessages(prev => prev.filter(message => message.replyId !== (val as Reply).replyId)) - + setMessages(prev => { + console.log("Previous messages:", prev.map((val) => val)); // 👈 logs the current state + return prev.filter(message => message.replyId !== (val as Reply).replyId); + }); removeReply(selectedComment?.threadId, (val as Reply).replyId); // Remove listener after response + console.log('(val as Reply).replyId: ', (val as Reply).replyId); + threadSocket.emit("v1-Comment:delete", deleteComment); } } catch { @@ -173,7 +181,7 @@ const Messages: React.FC = ({ val, i, setMessages, mode, setIsEdit } }); }; - + return ( <> {isEditComment ? ( diff --git a/app/src/components/ui/collaboration/ThreadChat.tsx b/app/src/components/ui/collaboration/ThreadChat.tsx index 61c33cb..3660dbe 100644 --- a/app/src/components/ui/collaboration/ThreadChat.tsx +++ b/app/src/components/ui/collaboration/ThreadChat.tsx @@ -12,6 +12,7 @@ import { addCommentsApi } from "../../../services/factoryBuilder/comments/addCom import { deleteThreadApi } from "../../../services/factoryBuilder/comments/deleteThreadApi"; import { createThreadApi } from "../../../services/factoryBuilder/comments/createThreadApi"; import { getRelativeTime } from "./function/getRelativeTime"; +import { useVersionContext } from "../../../modules/builder/version/versionContext"; const ThreadChat: React.FC = () => { const { userId, organization } = getUserData(); @@ -34,6 +35,8 @@ const ThreadChat: React.FC = () => { const { threadSocket } = useSocketStore(); const modeRef = useRef<'create' | 'edit' | null>(null); const messagesRef = useRef(null); + const { selectedVersionStore } = useVersionContext(); + const { selectedVersion } = selectedVersionStore(); useEffect(() => { modeRef.current = mode; @@ -48,12 +51,12 @@ const ThreadChat: React.FC = () => { ) .map((c) => { return { - replyId: c._id ?? "", + replyId: c._id ?? c.replyId, creatorId: c.creatorId || c.userId, createdAt: c.createdAt, lastUpdatedAt: "1 hr ago", comment: c.comment, - _id: c._id ?? "", + _id: c._id ?? c.replyId, }; }); @@ -61,7 +64,7 @@ const ThreadChat: React.FC = () => { } - }, [selectedComment]) + }, []) useEffect(() => { if (textareaRef.current) adjustHeight(textareaRef.current); @@ -143,7 +146,7 @@ const ThreadChat: React.FC = () => { const handleCreateComments = async (e: any) => { e.preventDefault(); try { - // const createComments = await addCommentsApi(projectId, value, selectedComment?.threadId)/ + // const createComments = await addCommentsApi(projectId, value, selectedComment?.threadId, selectedVersion?.versionId || "")/ // if (createComments.message === 'Thread comments add Successfully' && createComments.data) { // const commentData = { // replyId: `${createComments.data?._id}`, @@ -151,6 +154,7 @@ const ThreadChat: React.FC = () => { // createdAt: "2 hrs ago", // lastUpdatedAt: "2 hrs ago", // comment: value, + // versionId: selectedVersion?.versionId || "" // } // setMessages((prevMessages) => [ // ...prevMessages, @@ -162,11 +166,13 @@ const ThreadChat: React.FC = () => { if (threadSocket && mode === "create") { const addComment = { + versionId: selectedVersion?.versionId || "", projectId, userId, comment: value, organization, - threadId: selectedComment?.threadId + threadId: selectedComment?.threadId, + } threadSocket.emit("v1-Comment:add", addComment); @@ -179,19 +185,21 @@ const ThreadChat: React.FC = () => { const handleDeleteThread = async () => { if (!projectId) return; try { - // const deleteThread = await deleteThreadApi(projectId, selectedComment?.threadId) + // const deleteThread = await deleteThreadApi(projectId, selectedComment?.threadId, selectedVersion?.versionId || "") // // if (deleteThread.message === "Thread deleted Successfully") { // removeComment(selectedComment?.threadId) // setSelectedComment([]) // } + console.log('threadSocket:threadChat ', threadSocket); if (threadSocket) { // projectId, userId, organization, threadId const deleteThread = { projectId, userId, organization, - threadId: selectedComment?.threadId + threadId: selectedComment?.threadId, + versionId: selectedVersion?.versionId || "" } setSelectedComment(null) @@ -211,11 +219,12 @@ const ThreadChat: React.FC = () => { try { // try { // const thread = await createThreadApi( - // projectId, - // "active", - // commentPositionState[0].position, - // [0, 0, 0], - // value + // projectId, + // "active", + // commentPositionState[0].position, + // [0, 0, 0], + // value, + // selectedVersion?.versionId || "" // ); // // @@ -241,15 +250,17 @@ const ThreadChat: React.FC = () => { const createThread = { projectId, + versionId: selectedVersion?.versionId || "", userId, organization, state: "active", position: commentPositionState.position, rotation: [0, 0, 0], - threadTitle: value + threadTitle: value, }; if (threadSocket) { + console.log('createThread: ', createThread); setInputActive(false); threadSocket.emit("v1:thread:create", createThread); diff --git a/app/src/modules/collaboration/comments/instances/commentInstances.tsx b/app/src/modules/collaboration/comments/instances/commentInstances.tsx index d5a6028..aa363b1 100644 --- a/app/src/modules/collaboration/comments/instances/commentInstances.tsx +++ b/app/src/modules/collaboration/comments/instances/commentInstances.tsx @@ -5,16 +5,19 @@ import { getAllThreads } from '../../../../services/factoryBuilder/comments/getA import { useParams } from 'react-router-dom'; import { getUserData } from '../../../../functions/getUserData'; import { getRelativeTime } from '../../../../components/ui/collaboration/function/getRelativeTime'; +import { useVersionContext } from '../../../builder/version/versionContext'; function CommentInstances() { const { comments, setComments } = useCommentStore(); const { projectId } = useParams(); - const { userId } = getUserData() + const { userId } = getUserData(); + const { selectedVersionStore } = useVersionContext(); + const { selectedVersion } = selectedVersionStore(); const getThreads = async () => { - if (!projectId) return; + if (!projectId || !selectedVersion) return; try { - const getComments = await getAllThreads(projectId); + const getComments = await getAllThreads(projectId, selectedVersion?.versionId); const formattedThreads = Array.isArray(getComments.data) ? getComments.data.map((thread: any) => ({ diff --git a/app/src/modules/collaboration/socket/threadSocketResponses.dev.tsx b/app/src/modules/collaboration/socket/threadSocketResponses.dev.tsx index f0830b6..edccff8 100644 --- a/app/src/modules/collaboration/socket/threadSocketResponses.dev.tsx +++ b/app/src/modules/collaboration/socket/threadSocketResponses.dev.tsx @@ -14,12 +14,13 @@ interface ThreadSocketProps { const ThreadSocketResponsesDev = ({ setMessages, modeRef, messages }: ThreadSocketProps) => { const { threadSocket } = useSocketStore(); const { selectedComment, setSelectedComment, setCommentPositionState, commentPositionState } = useSelectedComment(); - const { comments, addComment, addReply, updateComment, updateReply } = useCommentStore(); + const { comments, removeReply, addComment, addReply, updateComment, updateReply } = useCommentStore(); const { userId } = getUserData(); useEffect(() => { if (!threadSocket) return; + // --- Add Comment Handler --- // const handleAddComment = (data: any) => { // @@ -55,52 +56,56 @@ const ThreadSocketResponsesDev = ({ setMessages, modeRef, messages }: ThreadSock // }; // threadSocket.on('v1-Comment:response:add', handleAddComment); const handleAddComment = (data: any) => { - // console.log('Add: ', data); + + const commentData = { replyId: data.data?._id, creatorId: data.data?.userId, createdAt: getRelativeTime(data.data?.createdAt), lastUpdatedAt: "2 hrs ago", - comment: data.data.comment, + comment: data.data?.comment, }; if (modeRef.current === "create") { - - addReply(selectedComment?.threadId, commentData); setMessages((prevMessages) => [...prevMessages, commentData]); } else if (modeRef.current === "edit") { - updateReply(selectedComment?.threadId, data.data?._id, commentData); setMessages((prev) => prev.map((message) => { // 👈 log each message + + return message.replyId === data.data?._id ? { ...message, comment: data.data?.comment } : message; }) ); - // console.log('data.data?.comment: ', data.data?.comment); + } else { } - threadSocket.off("v1-Comment:response:add", handleAddComment); }; threadSocket.on('v1-Comment:response:add', handleAddComment); // --- Delete Comment Handler --- const handleDeleteComment = (data: any) => { - // console.log('delete: ', data); - threadSocket.off('v1-Comment:response:delete', handleDeleteComment); + // setMessages(prev => { + // // 👈 logs the current state + // return prev.filter(message => message.replyId !== data.data._id); + // }); + + // removeReply(selectedComment?.threadId, data.data._id); + // }; threadSocket.on('v1-Comment:response:delete', handleDeleteComment); // --- Create Thread Handler --- const handleCreateThread = (data: any) => { - // console.log('createThread: ', data); + const comment: CommentSchema = { state: 'active', @@ -117,20 +122,28 @@ const ThreadSocketResponsesDev = ({ setMessages, modeRef, messages }: ThreadSock addComment(comment); setCommentPositionState(null); // setSelectedComment(null); - threadSocket.off('v1-thread:response:create', handleCreateThread); }; threadSocket.on('v1-thread:response:create', handleCreateThread); // --- Delete Thread Handler --- + // const handleDeleteThread = (data: any) => { + // + + // }; + // threadSocket.on("v1-thread:response:delete", handleDeleteThread); + console.log( + "del" + ); const handleDeleteThread = (data: any) => { - threadSocket.off('v1-thread:response:delete', handleDeleteThread); }; - threadSocket.on('v1-thread:response:delete', handleDeleteThread); + threadSocket.on("v1-thread:response:delete", handleDeleteThread); + const handleEditThread = (data: any) => { + const editedThread: CommentSchema = { state: 'active', threadId: data.data?._id, @@ -138,17 +151,16 @@ const ThreadSocketResponsesDev = ({ setMessages, modeRef, messages }: ThreadSock createdAt: data.data?.createdAt, threadTitle: data.data?.threadTitle, lastUpdatedAt: new Date().toISOString(), - position: data.data.position, + position: data.data?.position, rotation: [0, 0, 0], - comments: data.data.comments, + comments: data.data?.comments, }; - // console.log('data.data?._id: ', data.data?._id); + // updateComment(data.data?._id, editedThread); setSelectedComment(editedThread) // setSelectedComment(null); - }; threadSocket.on('v1-thread:response:updateTitle', handleEditThread); diff --git a/app/src/pages/Project.tsx b/app/src/pages/Project.tsx index 3d46865..26341b9 100644 --- a/app/src/pages/Project.tsx +++ b/app/src/pages/Project.tsx @@ -29,7 +29,6 @@ import { SceneProvider } from "../modules/scene/sceneContext"; import { getVersionHistoryApi } from "../services/factoryBuilder/versionControl/getVersionHistoryApi"; import { useVersionHistoryStore } from "../store/builder/useVersionHistoryStore"; import { VersionProvider } from "../modules/builder/version/versionContext"; -import ThreadChat from "../components/ui/collaboration/ThreadChat"; const Project: React.FC = () => { let navigate = useNavigate(); @@ -47,7 +46,7 @@ const Project: React.FC = () => { const { selectedUser } = useSelectedUserStore(); const { isLogListVisible } = useLogger(); const { setVersions } = useVersionHistoryStore(); - const { selectedComment, commentPositionState } = useSelectedComment(); + useEffect(() => { if (!email || !userId) { @@ -132,7 +131,7 @@ const Project: React.FC = () => { )} - {(commentPositionState !== null || selectedComment !== null) && } +
); }; diff --git a/app/src/services/factoryBuilder/comments/deleteThreadApi.ts b/app/src/services/factoryBuilder/comments/deleteThreadApi.ts index 9a7d2fa..14998b2 100644 --- a/app/src/services/factoryBuilder/comments/deleteThreadApi.ts +++ b/app/src/services/factoryBuilder/comments/deleteThreadApi.ts @@ -1,10 +1,15 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; // let url_Backend_dwinzo = `http://192.168.0.102:5000`; -export const deleteThreadApi = async (projectId: string, threadId: string) => { +export const deleteThreadApi = async ( + projectId: string, + threadId: string, + versionId: string +) => { const body: any = { projectId, threadId, + versionId, }; try { diff --git a/app/src/services/factoryBuilder/comments/getAllThreads.ts b/app/src/services/factoryBuilder/comments/getAllThreads.ts index 7e9ac0d..e956342 100644 --- a/app/src/services/factoryBuilder/comments/getAllThreads.ts +++ b/app/src/services/factoryBuilder/comments/getAllThreads.ts @@ -1,9 +1,10 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; -export const getAllThreads = async (projectId: string) => { +export const getAllThreads = async (projectId: string, versionId: string) => { + console.log("projectId: ", projectId, versionId); try { const response = await fetch( - `${url_Backend_dwinzo}/api/v1/Threads/${projectId}`, + `${url_Backend_dwinzo}/api/v1/Threads/${projectId}/${versionId}`, { method: "GET", headers: { @@ -21,7 +22,6 @@ export const getAllThreads = async (projectId: string) => { } const result = await response.json(); - console.log('result: ', result); return result; } catch (error) { From a562a510255b3aeaa05455e8036041baab15f4ae Mon Sep 17 00:00:00 2001 From: Poovizhi99 Date: Tue, 24 Jun 2025 12:21:12 +0530 Subject: [PATCH 7/8] Refactor collaboration APIs to include versionId in relevant functions and clean up commented code --- app/src/components/ui/collaboration/Messages.tsx | 6 ++---- app/src/components/ui/collaboration/ThreadChat.tsx | 2 -- .../socket/threadSocketResponses.dev.tsx | 14 +------------- .../factoryBuilder/comments/addCommentsApi.ts | 8 +++++--- .../factoryBuilder/comments/createThreadApi.ts | 14 +++++++++++--- .../factoryBuilder/comments/deleteCommentApi.ts | 4 +++- .../factoryBuilder/comments/editThreadTitleApi.ts | 4 +++- .../factoryBuilder/comments/getAllThreads.ts | 2 +- 8 files changed, 26 insertions(+), 28 deletions(-) diff --git a/app/src/components/ui/collaboration/Messages.tsx b/app/src/components/ui/collaboration/Messages.tsx index a182ad8..b3f37e1 100644 --- a/app/src/components/ui/collaboration/Messages.tsx +++ b/app/src/components/ui/collaboration/Messages.tsx @@ -77,7 +77,6 @@ const Messages: React.FC = ({ val, i, setMessages, mode, setIsEdit // position: editThreadTitle.data.position, // rotation: [0, 0, 0], // comments: [], - // versionId: selectedVersion?.versionId || "" // } // updateComment((val as CommentSchema).threadId, editedThread) // } @@ -105,7 +104,6 @@ const Messages: React.FC = ({ val, i, setMessages, mode, setIsEdit // createdAt: getRelativeTime(editComments.data?.createdAt), // lastUpdatedAt: "2 hrs ago", // comment: value, - // versionId: selectedVersion?.versionId || "" // } // updateReply((val as CommentSchema).threadId, (val as Reply)?.replyId, commentData); @@ -160,11 +158,11 @@ const Messages: React.FC = ({ val, i, setMessages, mode, setIsEdit versionId: selectedVersion?.versionId || "" } setMessages(prev => { - console.log("Previous messages:", prev.map((val) => val)); // 👈 logs the current state + // 👈 logs the current state return prev.filter(message => message.replyId !== (val as Reply).replyId); }); removeReply(selectedComment?.threadId, (val as Reply).replyId); // Remove listener after response - console.log('(val as Reply).replyId: ', (val as Reply).replyId); + threadSocket.emit("v1-Comment:delete", deleteComment); } diff --git a/app/src/components/ui/collaboration/ThreadChat.tsx b/app/src/components/ui/collaboration/ThreadChat.tsx index 3660dbe..8e4b24b 100644 --- a/app/src/components/ui/collaboration/ThreadChat.tsx +++ b/app/src/components/ui/collaboration/ThreadChat.tsx @@ -154,7 +154,6 @@ const ThreadChat: React.FC = () => { // createdAt: "2 hrs ago", // lastUpdatedAt: "2 hrs ago", // comment: value, - // versionId: selectedVersion?.versionId || "" // } // setMessages((prevMessages) => [ // ...prevMessages, @@ -201,7 +200,6 @@ const ThreadChat: React.FC = () => { threadId: selectedComment?.threadId, versionId: selectedVersion?.versionId || "" } - setSelectedComment(null) removeComment(selectedComment?.threadId) threadSocket.emit("v1:thread:delete", deleteThread); diff --git a/app/src/modules/collaboration/socket/threadSocketResponses.dev.tsx b/app/src/modules/collaboration/socket/threadSocketResponses.dev.tsx index edccff8..3b6eb10 100644 --- a/app/src/modules/collaboration/socket/threadSocketResponses.dev.tsx +++ b/app/src/modules/collaboration/socket/threadSocketResponses.dev.tsx @@ -75,8 +75,6 @@ const ThreadSocketResponsesDev = ({ setMessages, modeRef, messages }: ThreadSock setMessages((prev) => prev.map((message) => { // 👈 log each message - - return message.replyId === data.data?._id ? { ...message, comment: data.data?.comment } : message; @@ -92,14 +90,6 @@ const ThreadSocketResponsesDev = ({ setMessages, modeRef, messages }: ThreadSock // --- Delete Comment Handler --- const handleDeleteComment = (data: any) => { - - // setMessages(prev => { - // // 👈 logs the current state - // return prev.filter(message => message.replyId !== data.data._id); - // }); - - // removeReply(selectedComment?.threadId, data.data._id); - // }; threadSocket.on('v1-Comment:response:delete', handleDeleteComment); @@ -131,9 +121,7 @@ const ThreadSocketResponsesDev = ({ setMessages, modeRef, messages }: ThreadSock // }; // threadSocket.on("v1-thread:response:delete", handleDeleteThread); - console.log( - "del" - ); + const handleDeleteThread = (data: any) => { }; diff --git a/app/src/services/factoryBuilder/comments/addCommentsApi.ts b/app/src/services/factoryBuilder/comments/addCommentsApi.ts index 7e9469a..3bfda04 100644 --- a/app/src/services/factoryBuilder/comments/addCommentsApi.ts +++ b/app/src/services/factoryBuilder/comments/addCommentsApi.ts @@ -4,14 +4,16 @@ export const addCommentsApi = async ( projectId: any, comment: string, threadId?: string, - commentId?: string + commentId?: string, + versionId?: string ) => { console.log( " projectId, comments, threadId: ", projectId, comment, threadId, - commentId + commentId, + versionId ); try { const response = await fetch( @@ -27,7 +29,7 @@ export const addCommentsApi = async ( body: JSON.stringify({ projectId, comment, threadId, commentId }), } ); - console.log('response: ', response); + console.log("response: ", response); if (!response.ok) { console.error("Failed to add project"); } diff --git a/app/src/services/factoryBuilder/comments/createThreadApi.ts b/app/src/services/factoryBuilder/comments/createThreadApi.ts index d9bf553..cefc5fb 100644 --- a/app/src/services/factoryBuilder/comments/createThreadApi.ts +++ b/app/src/services/factoryBuilder/comments/createThreadApi.ts @@ -5,7 +5,8 @@ export const createThreadApi = async ( state: string, position: any, rotation: any, - threadTitle: any + threadTitle: any, + versionId?: string ) => { try { const response = await fetch(`${url_Backend_dwinzo}/api/v1/upsetThread`, { @@ -16,13 +17,20 @@ export const createThreadApi = async ( token: localStorage.getItem("token") || "", refresh_token: localStorage.getItem("refreshToken") || "", }, - body: JSON.stringify({ projectId, state, position, rotation, threadTitle }), + body: JSON.stringify({ + projectId, + state, + position, + rotation, + threadTitle, + versionId, + }), }); if (!response.ok) { console.error("Failed to add project"); } const result = await response.json(); - console.log('result: ', result); + console.log("result: ", result); return result; } catch (error) { if (error instanceof Error) { diff --git a/app/src/services/factoryBuilder/comments/deleteCommentApi.ts b/app/src/services/factoryBuilder/comments/deleteCommentApi.ts index 4147197..fba74c0 100644 --- a/app/src/services/factoryBuilder/comments/deleteCommentApi.ts +++ b/app/src/services/factoryBuilder/comments/deleteCommentApi.ts @@ -4,12 +4,14 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_UR export const deleteCommentApi = async ( projectId: string, threadId: string, - commentId: string + commentId: string, + versionId?: string ) => { const body: any = { projectId, threadId, commentId, + versionId, }; try { diff --git a/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts b/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts index 1b07186..10440a7 100644 --- a/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts +++ b/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts @@ -4,12 +4,14 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_UR export const editThreadTitleApi = async ( projectId: string, threadId: string, - threadTitle: string + threadTitle: string, + versionId?: string ) => { const body: any = { projectId, threadId, threadTitle, + versionId, }; try { diff --git a/app/src/services/factoryBuilder/comments/getAllThreads.ts b/app/src/services/factoryBuilder/comments/getAllThreads.ts index e956342..0854c95 100644 --- a/app/src/services/factoryBuilder/comments/getAllThreads.ts +++ b/app/src/services/factoryBuilder/comments/getAllThreads.ts @@ -1,7 +1,7 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const getAllThreads = async (projectId: string, versionId: string) => { - console.log("projectId: ", projectId, versionId); + try { const response = await fetch( `${url_Backend_dwinzo}/api/v1/Threads/${projectId}/${versionId}`, From 17ec72e283299551b1aae655f1821b1a5311528a Mon Sep 17 00:00:00 2001 From: Poovizhi99 Date: Tue, 24 Jun 2025 12:32:45 +0530 Subject: [PATCH 8/8] Update API endpoints to use consistent versioning in URL paths --- app/src/services/factoryBuilder/comments/addCommentsApi.ts | 2 +- app/src/services/factoryBuilder/comments/createThreadApi.ts | 2 +- app/src/services/factoryBuilder/comments/deleteCommentApi.ts | 2 +- app/src/services/factoryBuilder/comments/deleteThreadApi.ts | 2 +- app/src/services/factoryBuilder/comments/editThreadTitleApi.ts | 2 +- app/src/services/factoryBuilder/comments/getAllThreads.ts | 3 +-- 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/src/services/factoryBuilder/comments/addCommentsApi.ts b/app/src/services/factoryBuilder/comments/addCommentsApi.ts index 3bfda04..3a37e72 100644 --- a/app/src/services/factoryBuilder/comments/addCommentsApi.ts +++ b/app/src/services/factoryBuilder/comments/addCommentsApi.ts @@ -17,7 +17,7 @@ export const addCommentsApi = async ( ); try { const response = await fetch( - `${url_Backend_dwinzo}/api/v1/Thread/addComment`, + `${url_Backend_dwinzo}/api/V1/Thread/addComment`, { method: "POST", headers: { diff --git a/app/src/services/factoryBuilder/comments/createThreadApi.ts b/app/src/services/factoryBuilder/comments/createThreadApi.ts index cefc5fb..d682c35 100644 --- a/app/src/services/factoryBuilder/comments/createThreadApi.ts +++ b/app/src/services/factoryBuilder/comments/createThreadApi.ts @@ -9,7 +9,7 @@ export const createThreadApi = async ( versionId?: string ) => { try { - const response = await fetch(`${url_Backend_dwinzo}/api/v1/upsetThread`, { + const response = await fetch(`${url_Backend_dwinzo}/api/V1/upsetThread`, { method: "POST", headers: { Authorization: "Bearer ", diff --git a/app/src/services/factoryBuilder/comments/deleteCommentApi.ts b/app/src/services/factoryBuilder/comments/deleteCommentApi.ts index fba74c0..5d2b4cc 100644 --- a/app/src/services/factoryBuilder/comments/deleteCommentApi.ts +++ b/app/src/services/factoryBuilder/comments/deleteCommentApi.ts @@ -16,7 +16,7 @@ export const deleteCommentApi = async ( try { const response = await fetch( - `${url_Backend_dwinzo}/api/v1/Thread/deleteComment`, + `${url_Backend_dwinzo}/api/V1/Thread/deleteComment`, { method: "PATCH", headers: { diff --git a/app/src/services/factoryBuilder/comments/deleteThreadApi.ts b/app/src/services/factoryBuilder/comments/deleteThreadApi.ts index 14998b2..2a919fb 100644 --- a/app/src/services/factoryBuilder/comments/deleteThreadApi.ts +++ b/app/src/services/factoryBuilder/comments/deleteThreadApi.ts @@ -13,7 +13,7 @@ export const deleteThreadApi = async ( }; try { - const response = await fetch(`${url_Backend_dwinzo}/api/v1/Thread/delete`, { + const response = await fetch(`${url_Backend_dwinzo}/api/V1/Thread/delete`, { method: "PATCH", headers: { Authorization: "Bearer ", diff --git a/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts b/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts index 10440a7..af70f3a 100644 --- a/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts +++ b/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts @@ -16,7 +16,7 @@ export const editThreadTitleApi = async ( try { const response = await fetch( - `${url_Backend_dwinzo}/api/v1/Thread/updateTitle`, + `${url_Backend_dwinzo}/api/V1/Thread/updateTitle`, { method: "PATCH", headers: { diff --git a/app/src/services/factoryBuilder/comments/getAllThreads.ts b/app/src/services/factoryBuilder/comments/getAllThreads.ts index 0854c95..46d53e1 100644 --- a/app/src/services/factoryBuilder/comments/getAllThreads.ts +++ b/app/src/services/factoryBuilder/comments/getAllThreads.ts @@ -1,10 +1,9 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const getAllThreads = async (projectId: string, versionId: string) => { - try { const response = await fetch( - `${url_Backend_dwinzo}/api/v1/Threads/${projectId}/${versionId}`, + `${url_Backend_dwinzo}/api/V1/Threads/${projectId}/${versionId}`, { method: "GET", headers: {