mirror of
https://github.com/hex248/sprint.git
synced 2026-02-08 02:33:01 +00:00
"members" state
This commit is contained in:
@@ -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 () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user