"members" state

This commit is contained in:
Oliver Bryan
2026-01-06 22:59:25 +00:00
parent fafb0bb633
commit 732434c4a4

View File

@@ -1,5 +1,11 @@
/** biome-ignore-all lint/correctness/useExhaustiveDependencies: <> */ /** biome-ignore-all lint/correctness/useExhaustiveDependencies: <> */
import type { IssueResponse, OrganisationResponse, ProjectResponse, UserRecord } from "@issue/shared"; import type {
IssueResponse,
OrganisationMemberResponse,
OrganisationResponse,
ProjectResponse,
UserRecord,
} from "@issue/shared";
import { useEffect, useRef, useState } from "react"; import { useEffect, useRef, useState } from "react";
import AccountDialog from "@/components/account-dialog"; import AccountDialog from "@/components/account-dialog";
import { CreateIssue } from "@/components/create-issue"; import { CreateIssue } from "@/components/create-issue";
@@ -39,6 +45,8 @@ function Index() {
const [issues, setIssues] = useState<IssueResponse[]>([]); const [issues, setIssues] = useState<IssueResponse[]>([]);
const [selectedIssue, setSelectedIssue] = useState<IssueResponse | null>(null); const [selectedIssue, setSelectedIssue] = useState<IssueResponse | null>(null);
const [members, setMembers] = useState<UserRecord[]>([]);
const refetchUser = async () => { const refetchUser = async () => {
const userData = JSON.parse(localStorage.getItem("user") || "{}") as UserRecord; const userData = JSON.parse(localStorage.getItem("user") || "{}") as UserRecord;
setUser(userData); setUser(userData);
@@ -135,17 +143,37 @@ function Index() {
} }
}; };
const refetchMembers = async (organisationId: number) => {
try {
await organisation.members({
organisationId,
onSuccess: (data: OrganisationMemberResponse[]) => {
setMembers(data.map((m) => m.User));
},
onError: (error) => {
console.error("error fetching members:", error);
setMembers([]);
},
});
} catch (err) {
console.error("error fetching members:", err);
setMembers([]);
}
};
// fetch projects when organisation is selected // fetch projects when organisation is selected
useEffect(() => { useEffect(() => {
setProjects([]); setProjects([]);
setSelectedProject(null); setSelectedProject(null);
setSelectedIssue(null); setSelectedIssue(null);
setIssues([]); setIssues([]);
setMembers([]);
if (!selectedOrganisation) { if (!selectedOrganisation) {
return; return;
} }
void refetchProjects(selectedOrganisation.Organisation.id); void refetchProjects(selectedOrganisation.Organisation.id);
void refetchMembers(selectedOrganisation.Organisation.id);
}, [selectedOrganisation]); }, [selectedOrganisation]);
const refetchIssues = async () => { const refetchIssues = async () => {