"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;