useSession must be wrapped in a <SessionProvider />

pages/_app.tsx
// pages/_app.tsx
export type NextPageWithLayout = NextPage & {
getLayout?: (page: ReactElement) => ReactNode;
};

type AppPropsWithLayout = AppProps & {
Component: NextPageWithLayout;
};

const DoeApp: AppType<{ session: Session | null }> = ({
Component,
pageProps: { session, ...pageProps },
}: AppPropsWithLayout) => {
const getLayout = Component.getLayout ?? ((page) => page);
const layout = getLayout(<Component {...pageProps} />);

return (
<SessionProvider session={session}>
{layout}
</SessionProvider>
);
};

export default trpc.withTRPC(DoeApp);
// pages/_app.tsx
export type NextPageWithLayout = NextPage & {
getLayout?: (page: ReactElement) => ReactNode;
};

type AppPropsWithLayout = AppProps & {
Component: NextPageWithLayout;
};

const DoeApp: AppType<{ session: Session | null }> = ({
Component,
pageProps: { session, ...pageProps },
}: AppPropsWithLayout) => {
const getLayout = Component.getLayout ?? ((page) => page);
const layout = getLayout(<Component {...pageProps} />);

return (
<SessionProvider session={session}>
{layout}
</SessionProvider>
);
};

export default trpc.withTRPC(DoeApp);
pages/terms-of-service.tsx
const TermsOfService: NextPageWithLayout = () => {
return <div>
<div>Terms of service</div>
</div>
}

TermsOfService.getLayout = (page) => {
const session = useSession();
if (session.data) {
return <Layout>{page}</Layout>;
}
return <div className="min-h-screen dark:bg-black text-white">{page}</div>
}

export default TermsOfService;
const TermsOfService: NextPageWithLayout = () => {
return <div>
<div>Terms of service</div>
</div>
}

TermsOfService.getLayout = (page) => {
const session = useSession();
if (session.data) {
return <Layout>{page}</Layout>;
}
return <div className="min-h-screen dark:bg-black text-white">{page}</div>
}

export default TermsOfService;
11 Replies
mid
midOP3y ago
@create-t3-maintainer @Theo-Ish @Moderator
devagr
devagr3y ago
what
Mir
Mir3y ago
bruh
mid
midOP3y ago
I've a;sp tried const layout = getLayout(<Component {...pageProps} />);
cje
cje3y ago
Don’t do this
christian
christian3y ago
Yeah don’t It’s 1am my time Be considerate
devagr
devagr3y ago
be considerate of not being kicked
theo (t3.gg)
theo (t3.gg)3y ago
Fuck this I'm permaing him
devagr
devagr3y ago
bruh don't make him go to everyone's DMs
julius
julius3y ago
bruh
Aiden
Aiden3y ago
Have you tried rewriting it in rust

Did you find this page helpful?