refetchIssues function

This commit is contained in:
Oliver Bryan
2025-12-30 05:14:02 +00:00
parent 86a11e6cb5
commit cad3fec8ba

View File

@@ -80,6 +80,10 @@ function Index() {
void refetchOrganisations();
}, [user.id]);
useEffect(() => {
setSelectedOrganisation((prev) => prev || organisations[0] || null);
}, [organisations]);
const refetchProjects = async (organisationId: number, options?: { selectProjectId?: number }) => {
try {
const res = await fetch(
@@ -126,24 +130,30 @@ function Index() {
void refetchProjects(selectedOrganisation.Organisation.id);
}, [selectedOrganisation]);
useEffect(() => {
setSelectedProject((prev) => prev || projects[0] || null);
}, [projects]);
const refetchIssues = async (projectKey: string) => {
try {
const res = await fetch(`${serverURL}/issues/${projectKey}`, {
headers: getAuthHeaders(),
});
const data = (await res.json()) as IssueResponse[];
setIssues(data);
} catch (err) {
console.error("error fetching issues:", err);
setIssues([]);
}
};
// fetch issues when project is selected
useEffect(() => {
if (!selectedProject) return;
fetch(`${serverURL}/issues/${selectedProject.Project.key}`, { headers: getAuthHeaders() })
.then((res) => res.json())
.then((data: IssueResponse[]) => {
setIssues(data);
})
.catch((err) => {
console.error("error fetching issues:", err);
});
void refetchIssues(selectedProject.Project.key);
}, [selectedProject]);
useEffect(() => {
setSelectedProject((prev) => prev || projects[0] || null);
}, [projects]);
return (
<main className="w-full h-full p-1">
{/* header area */}