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
mid15mo ago
@create-t3-maintainer @Theo-Ish @Moderator
devagr
devagr15mo ago
what
Mir
Mir15mo ago
bruh
mid
mid15mo ago
I've a;sp tried const layout = getLayout(<Component {...pageProps} />);
cje
cje15mo ago
Don’t do this
heyglassy
heyglassy15mo ago
Yeah don’t It’s 1am my time Be considerate
devagr
devagr15mo ago
be considerate of not being kicked
theo
theo15mo ago
Fuck this I'm permaing him
devagr
devagr15mo ago
bruh don't make him go to everyone's DMs
julius
julius15mo ago
bruh
Aiden
Aiden15mo ago
Have you tried rewriting it in rust