From 6ce16483c6eba18d6dc1de97dad110188f743e92 Mon Sep 17 00:00:00 2001 From: Poovizhi99 Date: Wed, 22 Oct 2025 12:13:00 +0530 Subject: [PATCH] refactoring thread functionalities including socketresponses --- .../components/layout/scenes/MainScene.tsx | 76 +++++-- .../layout/sidebarRight/SideBarRight.tsx | 32 +-- .../properties/ThreadProperties.tsx | 124 ++++++++++++ .../components/ThreadDetails.tsx | 7 - .../collaboration/threads/CommentThreads.tsx | 82 +++++--- .../ui/collaboration/threads/Messages.tsx | 140 ++++++++----- .../ui/collaboration/threads/ThreadChat.tsx | 188 +++++++++++------- .../collaboration/functions/getAvatarColor.ts | 18 +- .../useThreadResponseHandler.ts | 67 +++++++ .../socket/collaborationResponses.tsx | 122 ++++++++++++ .../collaboration/socket/socketResponses.tsx | 3 + .../socket/threadSocketResponses.dev.tsx | 164 --------------- .../threadInstance/threadInstance.tsx | 50 +++-- .../threadInstances/threadInstances.tsx | 11 +- .../collaboration/threads/threadsGroup.tsx | 14 +- .../builder/collab/comments/addCommentApi.ts | 21 +- .../collab/comments/createThreadApi.ts | 9 +- .../collab/comments/deleteThreadApi.ts | 1 + .../builder/collab/comments/editCommentApi.ts | 11 +- app/src/store/builder/store.ts | 9 - app/src/store/collaboration/useThreadStore.ts | 17 ++ app/src/store/socket/useSocketStore.ts | 2 +- app/src/styles/layout/_sidebar.scss | 121 ++++++++++- app/src/types/collaborationTypes.d.ts | 4 +- .../utils/shortcutkeys/handleShortcutKeys.ts | 37 +++- 25 files changed, 909 insertions(+), 421 deletions(-) create mode 100644 app/src/components/layout/sidebarRight/properties/ThreadProperties.tsx delete mode 100644 app/src/components/layout/sidebarRight/properties/eventProperties/components/ThreadDetails.tsx create mode 100644 app/src/modules/collaboration/responseHandler/useThreadResponseHandler.ts create mode 100644 app/src/modules/collaboration/socket/collaborationResponses.tsx delete mode 100644 app/src/modules/collaboration/socket/threadSocketResponses.dev.tsx diff --git a/app/src/components/layout/scenes/MainScene.tsx b/app/src/components/layout/scenes/MainScene.tsx index ea2e800..927f34e 100644 --- a/app/src/components/layout/scenes/MainScene.tsx +++ b/app/src/components/layout/scenes/MainScene.tsx @@ -1,6 +1,13 @@ import { useEffect } from "react"; import { useParams } from "react-router-dom"; -import { useLoadingProgress, useRenameModeStore, useIsComparing, useSelectedComment, useWidgetSubOption, useToggleView, useCreateNewWindow } from "../../../store/builder/store"; +import { + useLoadingProgress, + useRenameModeStore, + useIsComparing, + useWidgetSubOption, + useToggleView, + useCreateNewWindow, +} from "../../../store/builder/store"; import useModuleStore from "../../../store/ui/useModuleStore"; import { useSocketStore } from "../../../store/socket/useSocketStore"; import { usePlayButtonStore } from "../../../store/ui/usePlayButtonStore"; @@ -44,16 +51,17 @@ function MainScene() { const { toggleView } = useToggleView(); const { isPlaying } = usePlayButtonStore(); const { widgetSubOption } = useWidgetSubOption(); - const { builderSocket, visualizationSocket } = useSocketStore(); + const { builderSocket, visualizationSocket, threadSocket } = useSocketStore(); const { selectedZone } = useSelectedZoneStore(); const { setFloatingWidget } = useFloatingWidget(); - const { assetStore, productStore, versionStore } = useSceneContext(); + const { assetStore, productStore, versionStore, threadStore } = useSceneContext(); const { products, selectedProduct } = productStore(); const { versionHistory, setVersions, selectedVersion, setSelectedVersion } = versionStore(); const { setName, selectedAssets, setSelectedAssets } = assetStore(); const { projectId } = useParams(); const { isRenameMode, setIsRenameMode } = useRenameModeStore(); - const { selectedComment, commentPositionState } = useSelectedComment(); + const { commentPositionState, selectedThread } = threadStore(); + const { resetStates } = useRestStates(); const { organization, userId } = getUserData(); const { createNewWindow } = useCreateNewWindow(); @@ -71,7 +79,12 @@ function MainScene() { builderSocket.emit("joinRoom", { projectId: projectId }); }, 1000); } - }, [builderSocket, projectId]); + if (threadSocket && projectId) { + setTimeout(() => { + threadSocket.emit("joinRoom", { projectId: projectId }); + }, 1000); + } + }, [builderSocket, threadSocket, projectId]); useEffect(() => { if (activeModule !== "simulation") { @@ -108,9 +121,13 @@ function MainScene() { useEffect(() => { if (versionHistory.length > 0) { recentlyViewedApi().then((projects) => { - const recent_opened_verisionID = (Object.values(projects?.RecentlyViewed || {})[0] as any)?.Present_version._id; + const recent_opened_verisionID = ( + Object.values(projects?.RecentlyViewed || {})[0] as any + )?.Present_version._id; if (recent_opened_verisionID && projects.RecentlyViewed[0]._id === projectId) { - const version = versionHistory.find((ver) => ver.versionId === recent_opened_verisionID); + const version = versionHistory.find( + (ver) => ver.versionId === recent_opened_verisionID + ); if (version) { setSelectedVersion(version); } @@ -188,7 +205,9 @@ function MainScene() { {!selectedUser && ( <> - {!createNewWindow && loadingProgress > 0 && } + {!createNewWindow && loadingProgress > 0 && ( + + )} {!isPlaying && ( <> {!toggleView && !isComparing && } @@ -203,27 +222,48 @@ function MainScene() { {/* */} {activeModule === "market" && } {activeModule !== "market" && !isPlaying && !isComparing && } - {isPlaying && activeModule === "simulation" && loadingProgress === 0 && } + {isPlaying && activeModule === "simulation" && loadingProgress === 0 && ( + + )} {isPlaying && activeModule !== "simulation" && } {activeModule === "visualization" && } - {isRenameMode && selectedAssets.length === 1 && } + {isRenameMode && selectedAssets.length === 1 && ( + + )} {activeModule === "builder" && toggleView && } - {selectedProduct && selectedVersion && isComparing && !isPlaying && activeModule === "simulation" && ( -
- v.versionName)} onSelect={handleSelectVersion} search={false} /> -
- l.productName)} onSelect={handleSelectProduct} search={false} /> -
- )} + {selectedProduct && + selectedVersion && + isComparing && + !isPlaying && + activeModule === "simulation" && ( +
+ v.versionName)} + onSelect={handleSelectVersion} + search={false} + /> +
+ l.productName)} + onSelect={handleSelectProduct} + search={false} + /> +
+ )} )} - {(commentPositionState !== null || selectedComment !== null) && } + {(commentPositionState !== null || selectedThread !== null) && } {activeModule !== "market" && !selectedUser &&