import { dehydrate, HydrationBoundary, QueryClient, } from "@tanstack/react-query"; import { Suspense } from "react"; import { Loader, Center } from "@mantine/core"; import dynamic from "next/dynamic"; import { getBoardsOptions, getProjectsOptions, } from "@/lib/client/@tanstack/react-query.gen"; import { combineProviders } from "@/utils/combineProviders"; // Dynamic imports for better code splitting const PageBody = dynamic(() => import("@/app/deals/components/shared/PageBody/PageBody"), { loading: () =>
}); const BoardsContextProvider = dynamic(() => import("@/app/deals/contexts/BoardsContext").then(mod => ({ default: mod.BoardsContextProvider }))); const ProjectsContextProvider = dynamic(() => import("@/app/deals/contexts/ProjectsContext").then(mod => ({ default: mod.ProjectsContextProvider }))); const StatusesContextProvider = dynamic(() => import("@/app/deals/contexts/StatusesContext").then(mod => ({ default: mod.StatusesContextProvider }))); const ViewContextProvider = dynamic(() => import("@/app/deals/contexts/ViewContext").then(mod => ({ default: mod.ViewContextProvider }))); const PageBlock = dynamic(() => import("@/components/layout/PageBlock/PageBlock")); const PageContainer = dynamic(() => import("@/components/layout/PageContainer/PageContainer")); const TopToolPanel = dynamic(() => import("./components/desktop/TopToolPanel/TopToolPanel"), { loading: () =>
}); async function prefetchData() { const queryClient = new QueryClient(); const projectsData = await queryClient.fetchQuery(getProjectsOptions()); const firstProjectId = projectsData.items?.[0]?.id; if (!firstProjectId) return queryClient; await queryClient.prefetchQuery( getBoardsOptions({ path: { projectId: firstProjectId } }) ); return queryClient; } export default async function DealsPage() { const queryClient = await prefetchData(); const Providers = combineProviders( [HydrationBoundary, { state: dehydrate(queryClient) }], [ProjectsContextProvider], [BoardsContextProvider], [StatusesContextProvider], [ViewContextProvider] ); return ( }> ); }