2025-03-31 19:22:37 +05:30
|
|
|
import React from "react";
|
|
|
|
|
import { KebabIcon } from "../../icons/ExportCommonIcons";
|
2025-05-19 14:50:33 +05:30
|
|
|
import img from "../../../assets/image/image.png";
|
|
|
|
|
import { useNavigate } from "react-router-dom";
|
|
|
|
|
import { useProjectName } from "../../../store/builder/store";
|
|
|
|
|
import { viewProject } from "../../../services/dashboard/viewProject";
|
|
|
|
|
import { getUserData } from "./functions/getUserData";
|
|
|
|
|
|
|
|
|
|
interface DashBoardCardProps {
|
|
|
|
|
projectName: string;
|
|
|
|
|
thumbnail: any;
|
|
|
|
|
projectId: string;
|
|
|
|
|
handleDeleteProject?: (projectId: string) => Promise<void>;
|
|
|
|
|
handleRestoreProject?: (projectId: string) => Promise<void>;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const DashboardCard: React.FC<DashBoardCardProps> = ({
|
|
|
|
|
projectName,
|
|
|
|
|
handleDeleteProject,
|
|
|
|
|
thumbnail,
|
|
|
|
|
projectId,
|
|
|
|
|
handleRestoreProject,
|
|
|
|
|
}) => {
|
|
|
|
|
let navigate = useNavigate();
|
|
|
|
|
const { setProjectName } = useProjectName();
|
|
|
|
|
const { userId, organization, userName } = getUserData();
|
|
|
|
|
|
|
|
|
|
const handleKebabIconClick = async () => {
|
|
|
|
|
try {
|
|
|
|
|
if (handleRestoreProject) {
|
|
|
|
|
await handleRestoreProject(projectId);
|
|
|
|
|
} else if (handleDeleteProject) {
|
|
|
|
|
await handleDeleteProject(projectId);
|
|
|
|
|
}
|
|
|
|
|
} catch { }
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const navigateToProject = async () => {
|
|
|
|
|
try {
|
|
|
|
|
const viewedProject = await viewProject(organization, projectId, userId);
|
|
|
|
|
console.log("Saved viewwdProject:", viewedProject);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error("Error deleting project:", error);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
setProjectName(projectName);
|
|
|
|
|
navigate(`/${projectId}`);
|
|
|
|
|
};
|
2025-03-31 19:22:37 +05:30
|
|
|
|
|
|
|
|
return (
|
2025-05-19 14:50:33 +05:30
|
|
|
<div className="dashboard-card-container" onClick={navigateToProject} title={projectName}>
|
2025-03-31 19:22:37 +05:30
|
|
|
<div className="preview-container">
|
2025-05-19 14:50:33 +05:30
|
|
|
{thumbnail ? <img src={thumbnail} alt="" /> : <img src={img} alt="" />}
|
2025-03-31 19:22:37 +05:30
|
|
|
</div>
|
|
|
|
|
<div className="project-details-container">
|
|
|
|
|
<div className="project-details">
|
2025-05-19 14:50:33 +05:30
|
|
|
<div className="project-name">{projectName}</div>
|
2025-03-31 19:22:37 +05:30
|
|
|
<div className="project-data">24-12-2025</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="users-list-container">
|
2025-05-19 14:50:33 +05:30
|
|
|
<div className="user-profile">
|
|
|
|
|
{userName ? userName.charAt(0).toUpperCase() : "Anonymous"}
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
onClick={(e) => {
|
|
|
|
|
e.stopPropagation();
|
|
|
|
|
handleKebabIconClick();
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
<KebabIcon />
|
|
|
|
|
</div>
|
2025-03-31 19:22:37 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
2025-05-19 14:50:33 +05:30
|
|
|
export default DashboardCard;
|