From 21dcd7940775004bdca38375fe9e99008d01ca6d Mon Sep 17 00:00:00 2001 From: Oliver Bryan <04oliverbryan@gmail.com> Date: Mon, 12 Jan 2026 02:51:29 +0000 Subject: [PATCH] sprint data fetching --- packages/frontend/src/pages/App.tsx | 34 +++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/pages/App.tsx b/packages/frontend/src/pages/App.tsx index 373dab4..bca78e2 100644 --- a/packages/frontend/src/pages/App.tsx +++ b/packages/frontend/src/pages/App.tsx @@ -5,6 +5,7 @@ import type { OrganisationMemberResponse, OrganisationResponse, ProjectResponse, + SprintRecord, UserRecord, } from "@issue/shared"; import { useEffect, useMemo, useRef, useState } from "react"; @@ -30,7 +31,7 @@ import { DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { ResizablePanel, ResizablePanelGroup, ResizableSeparator } from "@/components/ui/resizable"; -import { issue, organisation, project } from "@/lib/server"; +import { issue, organisation, project, sprint } from "@/lib/server"; const BREATHING_ROOM = 1; @@ -48,6 +49,7 @@ export default function App() { const [selectedIssue, setSelectedIssue] = useState(null); const [members, setMembers] = useState([]); + const [sprints, setSprints] = useState([]); const isAdmin = selectedOrganisation?.OrganisationMember.role === "owner" || @@ -255,6 +257,24 @@ export default function App() { } }; + const refetchSprints = async (projectId: number) => { + try { + await sprint.byProject({ + projectId, + onSuccess: (data: SprintRecord[]) => { + setSprints(data); + }, + onError: (error) => { + console.error("error fetching sprints:", error); + setSprints([]); + }, + }); + } catch (err) { + console.error("error fetching sprints:", err); + setSprints([]); + } + }; + // fetch projects when organisation is selected useEffect(() => { setProjects([]); @@ -314,6 +334,7 @@ export default function App() { if (!selectedProject) return; void refetchIssues(); + void refetchSprints(selectedProject.Project.id); }, [selectedProject]); useEffect(() => { @@ -398,7 +419,15 @@ export default function App() { await refetchIssues(); }} /> - {isAdmin && } + {isAdmin && ( + { + if (!selectedProject) return; + await refetchSprints(selectedProject?.Project.id); + }} + /> + )} )} @@ -472,6 +501,7 @@ export default function App() {