"use client"; import { useQuery } from "@tanstack/react-query"; import { getValidAccessToken } from "@/lib/auth"; import { identityApi } from "@/lib/identity"; import { useTenantId } from "@/hooks/useTenantId"; import { useMe } from "@/hooks/useMe"; export type TenantPerson = { id: string; label: string }; export function useTenantMembers() { const { tenantId } = useTenantId(); const { me } = useMe(); return useQuery({ queryKey: ["workspace", tenantId, "identity-members"], queryFn: async (): Promise => { const token = await getValidAccessToken(); if (!token || !tenantId) throw new Error("برای انتخاب اعضا باید وارد شوید."); let members: Awaited> = []; try { members = await identityApi.listMembers(token, tenantId); } catch { members = me?.user_id ? [{ id: me.user_id, tenant_id: tenantId, user_id: me.user_id, role: "tenant_member", is_active: true, joined_at: "" }] : []; } let users: Awaited> = []; try { users = await identityApi.listUsers(token, { limit: 100 }); } catch { users = []; } const names = new Map( users.map((user) => [ user.id, user.display_name || user.username || user.email || user.mobile || "عضو سازمان", ]) ); const people = members .filter((member) => member.is_active) .map((member) => ({ id: member.user_id, label: names.get(member.user_id) || "عضو سازمان", })); if (me?.user_id && !people.some((person) => person.id === me.user_id)) { people.unshift({ id: me.user_id, label: "من" }); } return people; }, enabled: !!tenantId, staleTime: 60_000, }); }