'use client'; import { useEffect, useState } from 'react'; import { useSuperAdmin } from '../../../_lib/super-admin-context'; import { useRouter, useParams } from 'next/navigation'; export default function TenantDetailPage() { const { admin, loading } = useSuperAdmin(); const router = useRouter(); const params = useParams(); const [tenant, setTenant] = useState(null); const [busy, setBusy] = useState(false); async function load() { const res = await fetch(`/api/admin/tenants/${params.id}`); if (res.ok) setTenant(await res.json()); } useEffect(() => { if (loading) return; if (!admin) { router.replace('/admin/login'); return; } void load(); }, [admin, loading, router, params.id]); async function toggleActive() { setBusy(true); await fetch(`/api/admin/tenants/${params.id}`, { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ isActive: !tenant.isActive }), }); await load(); setBusy(false); } async function togglePaused() { setBusy(true); await fetch(`/api/admin/tenants/${params.id}`, { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ isForwardingPaused: !tenant.isForwardingPaused }), }); await load(); setBusy(false); } if (loading) return

Loading...

; if (!admin) return null; if (!tenant) return

Loading tenant...

; return (

{tenant.name}

Slug: {tenant.slug}

Status
Forwarding
Groups
{tenant.stats?.groups ?? 0}
Messages
{tenant.stats?.messages ?? 0}
Rules
{tenant.stats?.rules ?? 0}
Routes
{tenant.stats?.routes ?? 0}
{tenant.bot && (

Assigned Bot

JID: {tenant.bot.jid}

Name: {tenant.bot.displayName ?? '—'}

Status: {tenant.bot.status}

Linked: {tenant.bot.linkedSince}

)} {tenant.admins && tenant.admins.length > 0 && (

Admins

{tenant.admins.map((a: any) => (

{a.email} — {a.role}

))}
)}
); }