"use client"; import React, {useEffect, useState} from "react"; import {useParams, useRouter} from "next/navigation"; import {ChevronLeft} from "lucide-react"; import {Button} from "@/components/ui/button"; import {Skeleton} from "@/components/ui/skeleton"; import {CustomerProject} from "@/services/projects/entities/customer-project"; export default function ProjectDetailPage() { const router = useRouter(); const {id} = useParams<{ id: string }>(); const [project, setProject] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { if (!id) { setError("No project ID provided"); setLoading(false); return; } let isMounted = true; setLoading(true); setError(null); fetch(`/api/projects/${id}`) .then(async (response) => { if (!isMounted) return; if (response.status === 404) { setError("Project not found"); setProject(null); return; } if (!response.ok) { throw new Error("Failed to fetch project data"); } const result = await response.json(); setProject(result); }) .catch((err) => { if (!isMounted) return; console.error("Error fetching project:", err); setProject(null); setError("Error loading project data"); }) .finally(() => { if (isMounted) { setLoading(false); } }); return () => { isMounted = false; }; }, [id]); if (loading) { return (
); } if (error) { return (

{error}

); } return (

{project?.name}

{project?.description}

); }