"use client"; import { useEffect, useState } from "react"; import { RefreshCw, Users } from "lucide-react"; import { AdminLayout } from "@/components/admin/admin-layout"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { useLanguage } from "@/components/language-provider"; interface Membership { id: string; user_name: string; user_email: string; organization_name: string; role: string; status: string; created_at: string; } export default function AdminMembersPage() { const { lang } = useLanguage(); const [memberships, setMemberships] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { const token = localStorage.getItem("access_token"); if (!token) { window.location.href = "/login?redirect=/admin/members"; return; } const fetchData = async () => { const baseURL = process.env.NEXT_PUBLIC_API_URL; try { const res = await fetch(`${baseURL}/membership/memberships/`, { headers: { Authorization: `Bearer ${token}` }, }); const data = await res.json(); setMemberships(data.results || []); } catch (e) { console.error(e); } finally { setLoading(false); } }; fetchData(); }, []); const t = (fa: string, en: string) => (lang === "fa" ? fa : en); if (loading) { return (
); } return (

{t("اعضا", "Members")}

{memberships.map((m) => ( ))}
{t("کاربر", "User")} {t("سازمان", "Organization")} {t("نقش", "Role")} {t("وضعیت", "Status")}
{m.user_name?.charAt(0) || m.user_email?.charAt(0) || "?"} {m.user_name || m.user_email}
{m.organization_name} {m.role} {m.status}
{memberships.length === 0 && !loading && (
{t("عضوی یافت نشد", "No members found")}
)}
); }