"use client"; import { useQuery } from "@tanstack/react-query"; import { useTenantId } from "@/hooks/useTenantId"; import { paymentApi } from "@/modules/payment/services/payment-api"; import { usePaymentHealth, usePaymentMetrics } from "@/modules/payment/hooks/usePaymentCapabilities"; import { PaymentPageLoader, PaymentPageError } from "@/modules/payment/pages/shared"; import { PageHeader, Card, CardContent, Badge } from "@/components/ds"; import { PaymentStatCards } from "@/modules/payment/components/PaymentCharts"; export const PaymentMonitoring = function PaymentMonitoringPage() { const { tenantId } = useTenantId(); const health = usePaymentHealth(); const metrics = usePaymentMetrics(); const opsQ = useQuery({ queryKey: ["payment", tenantId, "monitoring"], queryFn: async () => { const [requests, transactions] = await Promise.all([ paymentApi.requests.list(tenantId!), paymentApi.transactions.list(tenantId!), ]); const failed = requests.filter((r) => r.status === "failed").length; const pending = requests.filter((r) => ["pending", "redirect_issued"].includes(String(r.status)) ).length; return { failed, pending, requests: requests.length, transactions: transactions.length }; }, enabled: !!tenantId, refetchInterval: 30_000, }); if (!tenantId || health.isLoading || metrics.isLoading || opsQ.isLoading) { return ; } if (opsQ.error) return opsQ.refetch()} />; const ops = opsQ.data!; return (
{health.data?.status ?? "—"} } />

Health

{JSON.stringify(health.data, null, 2)}

Metrics

{JSON.stringify(metrics.data?.metrics ?? {}, null, 2)}
); }; export default PaymentMonitoring;