Add Yjs integration for collaborative drawing and update socket handling

This commit is contained in:
2025-06-27 10:06:45 +05:30
parent 3ab5c6ee6a
commit 1dc1ee3b3c
6 changed files with 283 additions and 32 deletions

View File

@@ -53,7 +53,7 @@ function MainScene() {
const { toggleThreeD } = useThreeDStore();
const { isPlaying } = usePlayButtonStore();
const { widgetSubOption } = useWidgetSubOption();
const { visualizationSocket } = useSocketStore();
const { socket, visualizationSocket } = useSocketStore();
const { selectedZone } = useSelectedZoneStore();
const { setFloatingWidget } = useFloatingWidget();
const { clearComparisonProduct } = useComparisonProduct();
@@ -68,6 +68,24 @@ function MainScene() {
const { selectedVersion, setSelectedVersion } = selectedVersionStore();
const { selectedComment, commentPositionState } = useSelectedComment();
useEffect(() => {
console.log('hi');
if (!projectId || !selectedVersion?.versionId || !socket) return;
socket.emit("joinRoom", { projectId, versionId: selectedVersion.versionId });
socket.on("v1:Line-collab:response:create", (data: any) => {
console.log("v1:Line-collab:response:create:", data);
});
return () => {
if (projectId && selectedVersion?.versionId && socket) {
socket.emit("leaveRoom", { projectId, versionId: selectedVersion.versionId });
socket.off("v1:Line-collab:response:create");
}
};
}, [projectId, selectedVersion?.versionId]);
useEffect(() => {
if (activeModule !== 'simulation') {
clearComparisonProduct();
@@ -188,7 +206,7 @@ function MainScene() {
{activeModule !== "market" && !selectedUser && <Footer />}
<VersionSaved />
{(commentPositionState !== null || selectedComment !== null) && <ThreadChat/>}
{(commentPositionState !== null || selectedComment !== null) && <ThreadChat />}
</>
);