worked with socket for dashboard

This commit is contained in:
2025-06-02 11:20:00 +05:30
40 changed files with 1415 additions and 320 deletions

View File

@@ -7,6 +7,7 @@ import { useSocketStore } from "../../store/builder/store";
import { recentlyViewed } from "../../services/dashboard/recentlyViewed";
import { searchProject } from "../../services/dashboard/searchProjects";
import { deleteProject } from "../../services/dashboard/deleteProject";
import { handleDuplicateProjects } from "./functions/handleDuplicateProject";
interface Project {
_id: string;
@@ -24,7 +25,7 @@ const DashboardHome: React.FC = () => {
const [recentProjects, setRecentProjects] = useState<RecentProjectsData>({});
const [isSearchActive, setIsSearchActive] = useState<boolean>(false);
const { userId, organization } = getUserData();
const { dashBoardSocket } = useSocketStore();
const { projectSocket } = useSocketStore();
const fetchRecentProjects = async () => {
try {
@@ -49,35 +50,38 @@ const DashboardHome: React.FC = () => {
userId,
inputValue
);
console.log('filterRecentProcess: ', filterRecentProcess);
setIsSearchActive(true);
setRecentProjects(filterRecentProcess.message ? {} : filterRecentProcess);
};
const handleDeleteProject = async (projectId: any) => {
console.log('projectId:delete ', projectId);
try {
//API for delete project
const deletedProject = await deleteProject(
projectId,
userId,
organization
);
// const deletedProject = await deleteProject(
// projectId,
// userId,
// organization
// );
// console.log('deletedProject: ', deletedProject);
//socket for delete Project
// const deleteProject = {
// projectId,
// organization,
// userId,
// };
const deleteProject = {
projectId,
organization,
userId,
};
// if (dashBoardSocket) {
// const handleResponse = (data: any) => {
// console.log("Project add response:", data);
// dashBoardSocket.off("v1-project:response:delete", handleResponse);
// };
if (projectSocket) {
const handleResponse = (data: any) => {
console.log("Project add response:", data);
projectSocket.off("v1-project:response:delete", handleResponse);
};
// dashBoardSocket.on("v1-project:response:delete", handleResponse);
// dashBoardSocket.emit("v1:project:delete", deleteProject);
// }
projectSocket.on("v1-project:response:delete", handleResponse);
projectSocket.emit("v1:project:delete", deleteProject);
}
setRecentProjects((prevDiscardedProjects: RecentProjectsData) => {
if (!Array.isArray(prevDiscardedProjects?.RecentlyViewed)) {
@@ -97,6 +101,21 @@ const DashboardHome: React.FC = () => {
}
};
const handleDuplicateRecentProject = async (projectId: string, projectName: string, thumbnail: string) => {
await handleDuplicateProjects({
userId,
organization,
projectId,
projectName,
projectSocket,
thumbnail,
setRecentProjects,
setIsSearchActive
});
}
const renderProjects = () => {
const projectList = recentProjects[Object.keys(recentProjects)[0]];
@@ -111,12 +130,12 @@ const DashboardHome: React.FC = () => {
thumbnail={project.thumbnail}
projectId={project._id}
handleDeleteProject={handleDeleteProject}
handleDuplicateRecentProject={handleDuplicateRecentProject}
/>
));
};
useEffect(() => {
console.log('isSearchActive: ', isSearchActive);
if (!isSearchActive) {
fetchRecentProjects();
}