|
- import AppBar from "@/components/AppBar";
- import { AuthOptions, getServerSession } from "next-auth";
- import { authOptions, SessionWithTokens } from "@/config/authConfig";
- import { redirect } from "next/navigation";
- import Box from "@mui/material/Box";
- import { NAVIGATION_CONTENT_WIDTH } from "@/config/uiConfig";
- import Stack from "@mui/material/Stack";
- import Breadcrumb from "@/components/Breadcrumb";
- import { AxiosProvider } from "@/app/(main)/axios/AxiosProvider";
- import { SetupAxiosInterceptors } from "@/app/(main)/axios/axiosInstance";
- import { CameraProvider } from "@/components/Cameras/CameraProvider";
- import { UploadProvider } from "@/components/UploadProvider/UploadProvider";
- import SessionProviderWrapper from "@/components/SessionProviderWrapper/SessionProviderWrapper";
- import QrCodeScannerProvider from "@/components/QrCodeScannerProvider/QrCodeScannerProvider";
- import { I18nProvider } from "@/i18n";
- import "src/app/global.css"
- export default async function MainLayout({
- children,
- }: {
- children: React.ReactNode;
- }) {
- const session = await getServerSession<AuthOptions, SessionWithTokens>(
- authOptions,
- );
-
- if (!session?.user) {
- redirect("/login");
- }
-
- // console.log(session?.user);
-
- // Verify if the session is valid
- if (session) {
- SetupAxiosInterceptors(session.accessToken);
- }
-
- return (
- <SessionProviderWrapper session={session}>
- <UploadProvider>
- {/* <CameraProvider> */}
- <AxiosProvider>
- <QrCodeScannerProvider>
- <>
- <AppBar
- profileName={session.user.name!}
- avatarImageSrc={session.user.image || undefined}
- />
- <Box
- component="main"
- sx={{
- marginInlineStart: { xs: 0, xl: NAVIGATION_CONTENT_WIDTH },
- padding: { xs: "1rem", sm: "1.5rem", lg: "3rem" },
- }}
- >
- <Stack spacing={2}>
- <I18nProvider namespaces={["common"]}>
- <Breadcrumb />
- {children}
- </I18nProvider>
- </Stack>
- </Box>
- </>
- </QrCodeScannerProvider>
- </AxiosProvider>
- {/* </CameraProvider> */}
- </UploadProvider>
- </SessionProviderWrapper>
- );
- }
|