diff --git a/packages/frontend/src/Index.tsx b/packages/frontend/src/Index.tsx index 3c56420..f79646a 100644 --- a/packages/frontend/src/Index.tsx +++ b/packages/frontend/src/Index.tsx @@ -1,9 +1,11 @@ import type { IssueRecord, ProjectRecord } from "@issue/shared"; import { useEffect, useRef, useState } from "react"; +import { IssueDetailPane } from "@/components/issue-detail-pane"; import { IssuesTable } from "@/components/issues-table"; -import { IssueDetailPane } from "./components/issue-detail-pane"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; function Index() { + const [selectedProject, setSelectedProject] = useState(null); const [projects, setProjects] = useState([]); const projectsRef = useRef(false); @@ -15,7 +17,6 @@ function Index() { .then((res) => res.json()) .then((data: ProjectRecord[]) => { setProjects(data); - console.log("fetched projects:", data); }) .catch((err) => { console.error("error fetching projects:", err); @@ -24,42 +25,66 @@ function Index() { const [selectedIssue, setSelectedIssue] = useState(null); const [issues, setIssues] = useState([]); - const issuesRef = useRef(false); const serverURL = import.meta.env.SERVER_URL?.trim() || "http://localhost:3000"; useEffect(() => { - if (issuesRef.current) return; - issuesRef.current = true; + if (!selectedProject) return; - fetch(`${serverURL}/issues/all`) + fetch(`${serverURL}/issues/${selectedProject.blob}`) .then((res) => res.json()) .then((data: IssueRecord[]) => { setIssues(data); - console.log("fetched issues:", data); }) .catch((err) => { console.error("error fetching issues:", err); }); - }, []); + }, [selectedProject]); return (
{/* header area */}
- project selection - filters +
{/* main body */}
{/* issues list (table) */} -
- -
+ {/* issue detail pane */} {selectedIssue && (