* fix: restore @ts-expect-error for CacheProvider type mismatch PR #30140 removed these comments assuming they were stale now that the repo is on TypeScript 5. The comments were about the compiler version, but the actual incompatibility is between react-inlinesvg/provider's CacheProvider (typed to return a bare ReactNode) and this repo's pinned @types/react@18.0.26, which requires JSX components to return Element | null. ReactNode includes undefined, so the JSX usage fails type-checking. Verified yarn build completes successfully with this restored. Fixes #30170 * docs: explain the actual @ts-expect-error compatibility condition Per @coderabbitai review on #30171: the old wording ("remove when upgrading typescript to v5") was itself stale/misleading, since the incompatibility is with the pinned @types/react version, not the TypeScript compiler version. Documents the real condition instead.
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
"use client";
|
|
|
|
import { TrpcProvider } from "app/_trpc/trpc-provider";
|
|
import { SessionProvider } from "next-auth/react";
|
|
import CacheProvider from "react-inlinesvg/provider";
|
|
import { ToastProvider } from "@coss/ui/components/toast";
|
|
|
|
import { WebPushProvider } from "@calcom/web/modules/notifications/components/WebPushContext";
|
|
import { NotificationSoundHandler } from "@calcom/web/components/notification-sound-handler";
|
|
|
|
import useIsBookingPage from "@lib/hooks/useIsBookingPage";
|
|
|
|
import { GeoProvider } from "./GeoContext";
|
|
|
|
type ProvidersProps = {
|
|
isEmbed: boolean;
|
|
children: React.ReactNode;
|
|
nonce: string | undefined;
|
|
country: string;
|
|
};
|
|
export function Providers({ isEmbed, children, country }: ProvidersProps) {
|
|
const isBookingPage = useIsBookingPage();
|
|
|
|
return (
|
|
<GeoProvider country={country}>
|
|
<SessionProvider>
|
|
<TrpcProvider>
|
|
<ToastProvider position="bottom-center">
|
|
{!isEmbed && !isBookingPage && <NotificationSoundHandler />}
|
|
{/* @ts-expect-error react-inlinesvg/provider is incompatible with @types/react@18.0.26. Remove when these types are compatible. */}
|
|
<CacheProvider>
|
|
<WebPushProvider>{children}</WebPushProvider>
|
|
</CacheProvider>
|
|
</ToastProvider>
|
|
</TrpcProvider>
|
|
</SessionProvider>
|
|
</GeoProvider>
|
|
);
|
|
}
|