refactoring thread functionalities including socketresponses
This commit is contained in:
122
app/src/modules/collaboration/socket/collaborationResponses.tsx
Normal file
122
app/src/modules/collaboration/socket/collaborationResponses.tsx
Normal file
@@ -0,0 +1,122 @@
|
||||
import { useEffect } from "react";
|
||||
import { useSocketStore } from "../../../store/socket/useSocketStore";
|
||||
import { getRelativeTime } from "../../../components/ui/collaboration/function/getRelativeTime";
|
||||
import useThreadResponseHandler from "../responseHandler/useThreadResponseHandler";
|
||||
|
||||
const CollaborationResponses = () => {
|
||||
const { threadSocket } = useSocketStore();
|
||||
const {
|
||||
addThreadToScene,
|
||||
updateThreadInScene,
|
||||
removeThreadFromScene,
|
||||
addReplyToThread,
|
||||
removeReplyFromThread,
|
||||
} = useThreadResponseHandler();
|
||||
|
||||
//#region Thread
|
||||
useEffect(() => {
|
||||
if (!threadSocket) return;
|
||||
|
||||
threadSocket.on("v1-thread:response:create", (data: any) => {
|
||||
if (!data.message || !data.data) {
|
||||
echo.error(`Error adding or updating thread`);
|
||||
return;
|
||||
}
|
||||
if (data.message === "Thread created Successfully") {
|
||||
const comment: ThreadSchema = {
|
||||
state: data.data.state,
|
||||
threadId: data.data._id,
|
||||
creatorId: data.data.createdBy,
|
||||
creatorName: data.data.creatorName,
|
||||
threadTitle: data.data.threadTitle,
|
||||
createdAt: getRelativeTime(data.data.createdAt),
|
||||
position: data.data.position,
|
||||
rotation: data.data.rotation,
|
||||
comments: [],
|
||||
};
|
||||
|
||||
addThreadToScene(comment, () => {
|
||||
echo.log("Thread created successfully");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
threadSocket.on("v1-thread:response:delete", (data: any) => {
|
||||
if (!data.message || !data.data) {
|
||||
echo.error(`Error in deleting thread`);
|
||||
return;
|
||||
}
|
||||
if (data.message === "Thread deleted Successfully") {
|
||||
removeThreadFromScene(data.data._id, () => {
|
||||
echo.log("Thread Deleted successfully");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
threadSocket.on("v1-thread:response:updateTitle", (data: any) => {
|
||||
if (!data.message || !data.data) {
|
||||
echo.error(`Error updating thread`);
|
||||
return;
|
||||
}
|
||||
if (data.message === "ThreadTitle updated Successfully") {
|
||||
const updatedThread: ThreadSchema = {
|
||||
state: data.data.state,
|
||||
threadId: data.data._id,
|
||||
creatorId: data.data.createdBy._id,
|
||||
creatorName: data.data.createdBy.userName,
|
||||
threadTitle: data.data.threadTitle,
|
||||
createdAt: getRelativeTime(data.data.createdAt),
|
||||
position: data.data.position,
|
||||
rotation: data.data.rotation,
|
||||
comments: data.data.comments,
|
||||
};
|
||||
|
||||
updateThreadInScene(data.data._id, updatedThread, () => {
|
||||
echo.log("Thread title is updated");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
threadSocket.on("v1-Comment:response:add", (data: any) => {
|
||||
if (data.message === "Thread comments add Successfully") {
|
||||
const reply: Reply = {
|
||||
creatorName: data.data.creatorName,
|
||||
creatorId: data.data.userId,
|
||||
createdAt: getRelativeTime(data.data.createdAt),
|
||||
comment: data.data.comment,
|
||||
lastUpdatedAt: "2hrs",
|
||||
replyId: data.data._id,
|
||||
};
|
||||
|
||||
addReplyToThread(data.data.threadId[0], reply);
|
||||
}
|
||||
});
|
||||
|
||||
threadSocket.on("v1-Comment:response:delete", (data: any) => {
|
||||
if (!data.message || !data.data) {
|
||||
echo.error(`Error deleting reply`);
|
||||
return;
|
||||
}
|
||||
if (data.message === "Thread comment deleted Successfully") {
|
||||
removeReplyFromThread(data.data._id, data.data.comments[0]._id, () => {
|
||||
echo.log("Reply added Successfully");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return () => {
|
||||
if (threadSocket) {
|
||||
threadSocket.off("v1-thread:response:create");
|
||||
threadSocket.off("v1-thread:response:delete");
|
||||
threadSocket.off("v1-thread:response:updateTitle");
|
||||
threadSocket.off("v1-Comment:response:add");
|
||||
threadSocket.off("v1-Comment:response:delete");
|
||||
}
|
||||
};
|
||||
}, [threadSocket]);
|
||||
//#endregion
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
export default CollaborationResponses;
|
||||
Reference in New Issue
Block a user