"use client"; import { useCallback, useEffect, useState } from "react"; import { NoPermissionState } from "@/components/auth/no-permission-state"; import { useSuperAdminSession } from "@/components/auth/session-context"; import { PageHeader } from "@/components/dashboard/page-header"; import { PaginationControls } from "@/components/dashboard/pagination-controls"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { EmptyState } from "@/components/ui/empty-state"; import { getItems, getPagination } from "@/lib/api/core"; import { getSuperAdminCases, getSuperAdminOps, restoreSuperAdminComment, restoreSuperAdminPost, updateSuperAdminCase, } from "@/lib/api/superadmin"; import { formatDateTime } from "@/lib/format"; import { useToast } from "@/components/ui/toast"; import { SUPERADMIN_PERMISSIONS, hasPermission } from "@/lib/permissions"; import type { SuperAdminCase, SuperAdminCasesResponse, SuperAdminOpsResponse, } from "@/types/api"; const EMPTY_CASES: SuperAdminCasesResponse = { items: [], data: [] }; const EMPTY_OPS: SuperAdminOpsResponse = { services: { mongodb: { status: "unknown" }, redis: { enabled: false, status: "unknown" }, queue: { enabled: false }, storage: {}, email: { enabled: false }, websocket: { redisAdapterEnabled: false }, }, queues: { outbox: { pending: 0, failed: 0 }, }, workload: { openCasesCount: 0, activeSuperAdminSessionsCount: 0, }, }; export default function OrdersPage() { const { permissions, session } = useSuperAdminSession(); const [casesResponse, setCasesResponse] = useState(null); const [ops, setOps] = useState(null); const [page, setPage] = useState(1); const [loading, setLoading] = useState(true); const { toast } = useToast(); const canManageCases = hasPermission(permissions, SUPERADMIN_PERMISSIONS.CASES_MANAGE); const canReadOps = hasPermission(permissions, SUPERADMIN_PERMISSIONS.OPS_READ); const canModerateContent = hasPermission( permissions, SUPERADMIN_PERMISSIONS.CONTENT_MODERATE, ); const loadQueue = useCallback(async () => { if (!canManageCases && !canReadOps) { setLoading(false); return; } setLoading(true); try { const [casesPayload, opsPayload] = await Promise.all([ canManageCases ? getSuperAdminCases({ page, limit: 12, sortOrder: "desc" }) : Promise.resolve(EMPTY_CASES), canReadOps ? getSuperAdminOps() : Promise.resolve(EMPTY_OPS), ]); setCasesResponse(casesPayload); setOps(opsPayload); } catch (error) { toast({ title: "Failed to load operations queue", description: String(error), variant: "danger" }); } finally { setLoading(false); } }, [canManageCases, canReadOps, page, toast]); useEffect(() => { void loadQueue(); }, [loadQueue]); const items = getItems(casesResponse) as SuperAdminCase[]; if (!canManageCases && !canReadOps) { return (
); } return (
{canReadOps ? (
Open cases {ops?.workload.openCasesCount ?? 0} Outbox pending {ops?.queues.outbox.pending ?? 0} Outbox failed {ops?.queues.outbox.failed ?? 0} Live sessions {ops?.workload.activeSuperAdminSessionsCount ?? 0}
) : null} {canManageCases ? ( Case queue {!items.length && !loading ? ( ) : (
{items.map((item) => (
{item.title}
{item.resourceType} / {item.resourceId || "-"} / {formatDateTime(item.updatedAt ?? item.createdAt)}
{item.status} {item.priority} {item.assignedTo ? {item.assignedTo} : null}
{canModerateContent && (item.resourceType === "post" || item.resourceType === "comment") && item.resourceId ? ( ) : null}
{item.description ? (

{item.description}

) : null}
))}
)}
) : null}
); }