import { useEffect } from "react";
import { useParams } from "react-router-dom";
import { useQuery } from "@tanstack/react-query";
import { projectsApi } from "../api/projects";
import { issuesApi } from "../api/issues";
import { usePanel } from "../context/PanelContext";
import { useCompany } from "../context/CompanyContext";
import { useBreadcrumbs } from "../context/BreadcrumbContext";
import { queryKeys } from "../lib/queryKeys";
import { ProjectProperties } from "../components/ProjectProperties";
import { StatusBadge } from "../components/StatusBadge";
import { EntityRow } from "../components/EntityRow";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import type { Issue } from "@paperclip/shared";
export function ProjectDetail() {
const { projectId } = useParams<{ projectId: string }>();
const { selectedCompanyId } = useCompany();
const { openPanel, closePanel } = usePanel();
const { setBreadcrumbs } = useBreadcrumbs();
const { data: project, isLoading, error } = useQuery({
queryKey: queryKeys.projects.detail(projectId!),
queryFn: () => projectsApi.get(projectId!),
enabled: !!projectId,
});
const { data: allIssues } = useQuery({
queryKey: queryKeys.issues.list(selectedCompanyId!),
queryFn: () => issuesApi.list(selectedCompanyId!),
enabled: !!selectedCompanyId,
});
const projectIssues = (allIssues ?? []).filter((i) => i.projectId === projectId);
useEffect(() => {
setBreadcrumbs([
{ label: "Projects", href: "/projects" },
{ label: project?.name ?? projectId ?? "Project" },
]);
}, [setBreadcrumbs, project, projectId]);
useEffect(() => {
if (project) {
openPanel(
Loading...
; if (error) return{error.message}
; if (!project) return null; return ({project.description}
)}{project.targetDate}
No issues in this project.
) : (