import type { IncomingMessage } from "http"; import { SessionProvider } from "next-auth/react"; import type { AppContextType } from "next/dist/shared/lib/utils"; import React, { useEffect } from "react"; import CacheProvider from "react-inlinesvg/provider"; import { trpc } from "@calcom/trpc/react"; import type { AppProps } from "@lib/app-providers"; import PlainChat from "@lib/plain/dynamicProvider"; import "../styles/globals.css"; function MyApp(props: AppProps) { const { Component, pageProps } = props; useEffect(() => { if (typeof window !== "undefined" && "serviceWorker" in navigator) { navigator.serviceWorker.register("/service-worker.js"); } }, []); return ( {/* @ts-expect-error FIXME remove this comment when upgrading typescript to v5 */} {Component.PageWrapper ? : } ); } declare global { interface Window { calNewLocale: string; } } MyApp.getInitialProps = async (ctx: AppContextType) => { const { req } = ctx.ctx; let newLocale = "en"; if (req) { const { getLocale } = await import("@calcom/features/auth/lib/getLocale"); // eslint-disable-next-line @typescript-eslint/no-explicit-any newLocale = await getLocale(req as IncomingMessage & { cookies: Record }); } else if (typeof window !== "undefined" && window.calNewLocale) { newLocale = window.calNewLocale; } return { pageProps: { newLocale, }, }; }; const WrappedMyApp = trpc.withTRPC(MyApp); export default WrappedMyApp;