import { type AppType } from "next/app"; import { type Session } from "next-auth"; import { SessionProvider } from "next-auth/react"; import { api } from "~/utils/api"; import "~/styles/globals.css"; import Navbar from "~/components/Navbar"; import { useRouter } from "next/router"; import { useEffect, useState } from "react"; import Loading from "~/components/Loading"; import Footer from "~/components/Footer"; const MyApp: AppType<{ session: Session | null }> = ({ Component, pageProps: { session, ...pageProps }, }) => { const [pageLoading, setPageLoading] = useState(false); const router = useRouter(); useEffect(() => { router.events.on("routeChangeStart", () => { setPageLoading(true); }); router.events.on("routeChangeComplete", () => { setPageLoading(false); }); return () => { router.events.off("routeChangeStart", () => { setPageLoading(true); }); router.events.off("routeChangeComplete", () => { setPageLoading(false); }); }; }, [router.events]); return (
{pageLoading ? : }
); }; export default api.withTRPC(MyApp);