"use client"; import { useEffect, useState } from "react"; import { RefreshCw, Mail } 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 Invitation { id: string; organization_name: string; email: string; role: string; status: string; created_at: string; } export default function AdminInvitationsPage() { const { lang } = useLanguage(); const [invitations, setInvitations] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { const token = localStorage.getItem("access_token"); if (!token) { window.location.href = "/login?redirect=/admin/invitations"; return; } const fetchData = async () => { const baseURL = process.env.NEXT_PUBLIC_API_URL; try { const res = await fetch(`${baseURL}/membership/invitations/`, { headers: { Authorization: `Bearer ${token}` }, }); const data = await res.json(); setInvitations(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("دعوت\u200cها", "Invitations")}

{invitations.map((inv) => ( ))}
{t("ایمیل", "Email")} {t("سازمان", "Organization")} {t("نقش", "Role")} {t("وضعیت", "Status")}
{inv.email} {inv.organization_name} {inv.role} {inv.status}
{invitations.length === 0 && !loading && (
{t("دعوتی یافت نشد", "No invitations found")}
)}
); }