The code refactors the getUser function in the marketing layout file within the web app. It simplifies code by directly retrieving user information within the function and eliminates unnecessary use of Supabase server component client. This change improves efficiency and readability, and reduces potential errors by restricting server pings to necessary operations only.
37 lines
1007 B
TypeScript
37 lines
1007 B
TypeScript
import { getSupabaseServerComponentClient } from '@kit/supabase/server-component-client';
|
|
|
|
import { SiteFooter } from '~/(marketing)/_components/site-footer';
|
|
import { SiteHeader } from '~/(marketing)/_components/site-header';
|
|
import { withI18n } from '~/lib/i18n/with-i18n';
|
|
|
|
async function SiteLayout(props: React.PropsWithChildren) {
|
|
const user = await getUser();
|
|
|
|
return (
|
|
<>
|
|
<SiteHeader user={user} />
|
|
|
|
{props.children}
|
|
|
|
<SiteFooter />
|
|
</>
|
|
);
|
|
}
|
|
|
|
export default withI18n(SiteLayout);
|
|
|
|
async function getUser() {
|
|
const client = getSupabaseServerComponentClient();
|
|
|
|
// Supabase is going to be complaining about this line
|
|
// since we use getSession instead of getUser
|
|
// we don't quite care because we only need to know if the user is logged in
|
|
// to display the user menu in the header.
|
|
// There is no need to ping the server while navigating to marketing pages.
|
|
const {
|
|
data: { session },
|
|
} = await client.auth.getSession();
|
|
|
|
return session?.user;
|
|
}
|