"use client"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { toast } from "sonner"; import { useTenantId } from "@/hooks/useTenantId"; import { experienceApi } from "@/modules/experience/services/experience-api"; import { ExperiencePageLoader, ExperiencePageError } from "@/modules/experience/pages/shared"; import { ExperienceBreadcrumbs } from "@/modules/experience/components/ExperienceBreadcrumbs"; import { PageHeader, Button, Card, CardContent } from "@/components/ds"; import { ExperienceStatGrid } from "@/modules/experience/design-system"; export const AnalyticsDashboardPage = function ExperienceAnalyticsDashboard() { const { tenantId } = useTenantId(); const qc = useQueryClient(); const defsQ = useQuery({ queryKey: ["experience", tenantId, "analytics-defs"], queryFn: () => experienceApi.analyticsReportDefinitions.list(tenantId!), enabled: !!tenantId, }); const snapsQ = useQuery({ queryKey: ["experience", tenantId, "analytics-snaps"], queryFn: () => experienceApi.analyticsSnapshots.list(tenantId!), enabled: !!tenantId, }); const refreshM = useMutation({ mutationFn: () => experienceApi.analyticsSnapshots.refresh(tenantId!, {}), onSuccess: () => { toast.success("اسنپ‌شات‌ها به‌روز شد"); qc.invalidateQueries({ queryKey: ["experience", tenantId, "analytics-snaps"] }); }, onError: (e: Error) => toast.error(e.message), }); if (!tenantId || defsQ.isLoading || snapsQ.isLoading) return ; if (defsQ.error) return defsQ.refetch()} />; return (
refreshM.mutate()} loading={refreshM.isPending}> بروزرسانی اسنپ‌شات‌ها } />

آخرین اسنپ‌شات‌ها

    {(snapsQ.data ?? []).slice(0, 8).map((s) => (
  • {new Date(String(s.computed_at ?? s.created_at)).toLocaleString("fa-IR")} — {String(s.status)}
  • ))}

تعاریف گزارش

    {(defsQ.data ?? []).slice(0, 8).map((d) => (
  • {String(d.code ?? d.name ?? d.id)}
  • ))}
); }; export default AnalyticsDashboardPage;