import React, { useEffect, useState } from "react"; import { DocumentationIcon, HelpIcon, HomeIcon, LogoutIcon, NotificationIcon, ProjectsIcon, TutorialsIcon, } from "../icons/DashboardIcon"; import { useNavigate } from "react-router-dom"; import darkThemeImage from "../../assets/image/darkThemeProject.png"; import lightThemeImage from "../../assets/image/lightThemeProject.png"; import { SettingsIcon, TrashIcon } from "../icons/ExportCommonIcons"; import { getUserData } from "./functions/getUserData"; import { useLoadingProgress, useSocketStore } from "../../store/builder/store"; import { createProject } from "../../services/dashboard/createProject"; interface SidePannelProps { setActiveTab: React.Dispatch>; activeTab: string } const SidePannel: React.FC = ({ setActiveTab, activeTab }) => { const { email, userName, userId, organization } = getUserData(); const navigate = useNavigate(); const { loadingProgress, setLoadingProgress } = useLoadingProgress(); const { dashBoardSocket, projectSocket } = useSocketStore(); const savedTheme = localStorage.getItem("theme") ?? "light"; function generateProjectId() { const randomBytes = new Uint8Array(12); crypto.getRandomValues(randomBytes); return Array.from(randomBytes, (byte) => byte.toString(16).padStart(2, "0")).join(""); } const handleCreateNewProject = async () => { const token = localStorage.getItem("token"); try { const projectId = generateProjectId(); useSocketStore.getState().initializeSocket(email, organization, token); //API for creating new Project // const project = await createProject( // projectId, // userId, // savedTheme === "dark" ? darkThemeImage : lightThemeImage, // organization // ); // console.log('Created project: ', project); const addProject = { userId, thumbnail: savedTheme === "dark" ? darkThemeImage : lightThemeImage, organization: organization, projectUuid: projectId, }; // socket for creating new project // console.log('dashBoardSocket: ', dashBoardSocket); console.log('projectSocket: ', projectSocket); if (projectSocket) { // console.log('addProject: ', addProject); const handleResponse = (data: any) => { console.log('Project add response:', data); if (data.message === "Project created successfully") { setLoadingProgress(1) navigate(`/${data.data.projectId}`); } projectSocket.off("v1-project:response:add", handleResponse); // Clean up }; projectSocket.on("v1-project:response:add", handleResponse); console.log('addProject: ', addProject); projectSocket.emit("v1:project:add", addProject); } else { console.error("Socket is not connected."); } } catch (error) { console.error("Error creating project:", error); } }; return (
{userName?.charAt(0).toUpperCase()}
{userName ? userName.charAt(0).toUpperCase() + userName.slice(1).toLowerCase() : "Anonymous"}
+ New project
setActiveTab("Home")}> Home
setActiveTab("Projects")}> Projects
setActiveTab("Trash")}> Trash
setActiveTab("Tutorials")}> Tutorials
setActiveTab("Documentation")}> Documentation
Settings
Log out
Help & Feedback
); }; export default SidePannel;