import React 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 { setLoadingProgress } = useLoadingProgress(); const { 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, }; // 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
{ localStorage.clear(); navigate("/"); }}> Log out
Help & Feedback
); }; export default SidePannel;