"use client"; import { useCallback, useEffect, useState } from "react"; import Link from "next/link"; import { api, ApiError, type Tenant } from "@/lib/api"; import { AdminPageHeader, Banner, Button, EmptyState, StatusBadge, } from "@/components/admin/controls"; export default function AdminTenantsPage() { const [tenants, setTenants] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(""); const [busyId, setBusyId] = useState(null); const load = useCallback(async () => { setLoading(true); setError(""); try { const page = await api.platformTenants.list(1, 100); setTenants(page.items); } catch (e) { setError(e instanceof ApiError ? e.message : "خطا در بارگذاری Tenantها"); } finally { setLoading(false); } }, []); useEffect(() => { void load(); }, [load]); const toggleStatus = async (t: Tenant) => { setBusyId(t.id); setError(""); try { if (t.status === "suspended") { await api.platformTenants.activate(t.id); } else { await api.platformTenants.suspend(t.id); } await load(); } catch (e) { setError(e instanceof ApiError ? e.message : "تغییر وضعیت ناموفق بود"); } finally { setBusyId(null); } }; return (
} /> {error && {error}}
{loading ? ( ) : tenants.length === 0 ? ( ) : (
{tenants.map((t) => ( ))}
نام Slug وضعیت Onboarding عملیات
{t.name} {t.slug} {t.onboarding_completed ? "تکمیل‌شده" : "ناتمام"}
)}
); }