diff --git a/app/src/components/Dashboard/DashboardCard.tsx b/app/src/components/Dashboard/DashboardCard.tsx index 5d11950..63815de 100644 --- a/app/src/components/Dashboard/DashboardCard.tsx +++ b/app/src/components/Dashboard/DashboardCard.tsx @@ -6,16 +6,13 @@ import { useProjectName, useSocketStore } from "../../store/builder/store"; import { viewProject } from "../../services/dashboard/viewProject"; import OuterClick from "../../utils/outerClick"; import { KebabIcon } from "../icons/ExportCommonIcons"; -import darkThemeImage from "../../assets/image/darkThemeProject.png"; -import lightThemeImage from "../../assets/image/lightThemeProject.png"; -import { updateProject } from "../../services/dashboard/updateProject"; import { getAllProjects } from "../../services/dashboard/getAllProjects"; -import { duplicateProject } from "../../services/dashboard/duplicateProject"; interface DashBoardCardProps { projectName: string; thumbnail: any; projectId: string; + createdAt?: string handleDeleteProject?: (projectId: string) => Promise; handleTrashDeleteProject?: (projectId: string) => Promise; handleRestoreProject?: (projectId: string) => Promise; @@ -24,6 +21,8 @@ interface DashBoardCardProps { active?: string; setIsSearchActive?: React.Dispatch>; } +type RelativeTimeFormatUnit = any + const DashboardCard: React.FC = ({ projectName, @@ -33,9 +32,9 @@ const DashboardCard: React.FC = ({ handleDeleteProject, handleRestoreProject, handleTrashDeleteProject, - setIsSearchActive, handleDuplicateWorkspaceProject, - handleDuplicateRecentProject + handleDuplicateRecentProject, + createdAt }) => { const navigate = useNavigate(); const { setProjectName } = useProjectName(); @@ -44,10 +43,8 @@ const DashboardCard: React.FC = ({ const [renameValue, setRenameValue] = useState(projectName); const [isRenaming, setIsRenaming] = useState(false); const { projectSocket } = useSocketStore(); - const kebabRef = useRef(null); const savedTheme = localStorage.getItem("theme") ?? "light"; - const navigateToProject = async (e: any) => { if (active && active == "trash") return try { @@ -68,9 +65,7 @@ const DashboardCard: React.FC = ({ await handleDeleteProject(projectId); } else if (handleTrashDeleteProject) { - console.log('projectId:dashboard ', projectId); - // await handleTrashDeleteProject(projectId); - handleTrashDeleteProject(projectId); + await handleTrashDeleteProject(projectId); } break; case "restore": @@ -146,7 +141,7 @@ const DashboardCard: React.FC = ({ setMenuVisible: () => setIsKebabOpen(false), }); const handleProjectName = async (projectName: string) => { - setProjectName(projectName); + // setProjectName(projectName); setRenameValue(projectName) if (!projectId) return // localStorage.setItem("projectName", newName); @@ -190,6 +185,34 @@ const DashboardCard: React.FC = ({ } }; + function getRelativeTime(dateString: string): string { + const date = new Date(dateString); + const now = new Date(); + const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000); + + const intervals: Record = { + year: 31536000, + month: 2592000, + week: 604800, + day: 86400, + hour: 3600, + minute: 60, + second: 1, + }; + + const rtf = new Intl.RelativeTimeFormat('en', { numeric: 'auto' }); + + for (const key in intervals) { + const unit = key as RelativeTimeFormatUnit; + const diff = Math.floor(diffInSeconds / intervals[unit]); + if (diff >= 1) { + return rtf.format(-diff, unit); + } + } + return 'just now'; + } + + return (