"use client"; import { useQuery } from "@tanstack/react-query"; import Link from "next/link"; import { sportsCenterApi } from "@/modules/sports-center/services/sports-center-api"; import { useTenantId } from "@/hooks/useTenantId"; import { useSportsCenterCapabilities } from "@/modules/sports-center/hooks/useSportsCenterCapabilities"; import { SportsCenterPageLoader, SportsCenterPageError } from "@/modules/sports-center/pages/shared"; import { PageHeader, StatCard, Card, CardContent, Button, Badge } from "@/components/ds"; import { SportsCenterBreadcrumbs } from "@/modules/sports-center/components/SportsCenterBreadcrumbs"; export function OwnerDashboard() { const { tenantId } = useTenantId(); const caps = useSportsCenterCapabilities(); const countsQ = useQuery({ queryKey: ["sports-center", tenantId, "dashboard-counts"], queryFn: async () => { const [members, memberships, coaches, sessions, attendance] = await Promise.all([ sportsCenterApi.members.list(tenantId!, { page: 1, page_size: 500 }), sportsCenterApi.memberships.list(tenantId!, { page: 1, page_size: 500 }), sportsCenterApi.coaches.list(tenantId!, { page: 1, page_size: 500 }), caps.data?.features?.booking_engine ? sportsCenterApi.sessions.list(tenantId!, { sports_center_id: "", page: 1, page_size: 500 }).catch(() => []) : Promise.resolve([]), Promise.resolve([]), ]); const activeMembers = members.filter((m) => m.status === "active").length; const activeMemberships = memberships.filter((m) => m.status === "active").length; return { members: members.length, activeMembers, memberships: memberships.length, activeMemberships, coaches: coaches.length, sessions: sessions.length, attendance: attendance.length, }; }, enabled: !!tenantId && !caps.isLoading, }); if (!tenantId || countsQ.isLoading || caps.isLoading) return ; if (countsQ.error) return countsQ.refetch()} />; const c = countsQ.data!; return (
v{caps.data?.version}} />
); } export default OwnerDashboard;