diff --git a/src/app/deals/page.tsx b/src/app/deals/page.tsx index a71aa15..fefadd3 100644 --- a/src/app/deals/page.tsx +++ b/src/app/deals/page.tsx @@ -15,6 +15,7 @@ import { getBoardsOptions, getProjectsOptions, } from "@/lib/client/@tanstack/react-query.gen"; +import { combineProviders } from "@/utils/combineProviders"; import { DealsContextProvider } from "./contexts/DealsContext"; async function prefetchData() { @@ -34,23 +35,24 @@ async function prefetchData() { export default async function DealsPage() { const queryClient = await prefetchData(); + const Providers = combineProviders( + [HydrationBoundary, { state: dehydrate(queryClient) }], + [ProjectsContextProvider], + [BoardsContextProvider], + [StatusesContextProvider] + ); + return ( - - - - - - -
- - - - - - - - - - + + + +
+ + + + + + + ); } diff --git a/src/utils/combineProviders.tsx b/src/utils/combineProviders.tsx new file mode 100644 index 0000000..beaa8a0 --- /dev/null +++ b/src/utils/combineProviders.tsx @@ -0,0 +1,25 @@ +import { ElementType, PropsWithChildren } from "react"; + +type ProvidersType = [ElementType, Record] | [ElementType]; + +export const combineProviders = ( + ...componentsWithProps: Array +): ElementType => { + const getInitial = ({ children }: PropsWithChildren) => children; + + return componentsWithProps.reduce( + ( + AccumulatedComponents: ElementType, + [Provider, props = {}]: ProvidersType + ) => { + return ({ children }: PropsWithChildren) => { + return ( + + {children} + + ); + }; + }, + getInitial + ); +};