"use client"; import { useQuery } from "@tanstack/react-query"; import Link from "next/link"; import { communicationApi } from "@/modules/communication/services/communication-api"; import { useAuth } from "@/hooks/useAuth"; import { useTenantId } from "@/hooks/useTenantId"; import { useCommunicationCapabilities, useCommunicationMonitoring, } from "@/modules/communication/hooks/useCommunicationCapabilities"; import { CommunicationPageLoader, CommunicationPageError } from "@/modules/communication/pages/shared"; import { PageHeader, StatCard, Card, CardContent, Button, Badge } from "@/components/ds"; import { CommunicationBreadcrumbs } from "@/modules/communication/components/CommunicationBreadcrumbs"; export function ExecutiveDashboard() { const { tenantId } = useTenantId(); const { isAuthenticated, loading: authLoading } = useAuth(); const caps = useCommunicationCapabilities(); const monitoring = useCommunicationMonitoring(tenantId); const countsQ = useQuery({ queryKey: ["communication", tenantId, "exec-counts"], queryFn: async () => { const [providers, templates, messages] = await Promise.all([ communicationApi.providers.list(tenantId!), communicationApi.templates.list(tenantId!), communicationApi.messages.list(tenantId!, { limit: 500 }), ]); return { providers: providers.length, templates: templates.length, messages: messages.length, delivered: messages.filter((m) => m.status === "delivered").length, }; }, enabled: !!tenantId && isAuthenticated && !authLoading, }); if (authLoading || !tenantId || countsQ.isLoading || caps.isLoading) { return ; } if (countsQ.error) return countsQ.refetch()} />; const c = countsQ.data!; const stats = monitoring.data; return ( v{caps.data?.version} · SMS MVP } /> {stats ? ( صف پیام {JSON.stringify(stats.queue_by_status, null, 2)} وضعیت پیامها {JSON.stringify(stats.messages_by_status, null, 2)} ) : null} ارائهدهندگان ارسال SMS تاریخچه قابلیتها ); } export default ExecutiveDashboard;
صف پیام
{JSON.stringify(stats.queue_by_status, null, 2)}
وضعیت پیامها
{JSON.stringify(stats.messages_by_status, null, 2)}