FPSMS-frontend
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

60 line
1.9 KiB

  1. import AppBar from "@/components/AppBar";
  2. import { AuthOptions, getServerSession } from "next-auth";
  3. import { authOptions, SessionWithTokens } from "@/config/authConfig";
  4. import { redirect } from "next/navigation";
  5. import MainContentArea from "@/app/(main)/MainContentArea";
  6. import MainLayoutBody from "@/app/(main)/MainLayoutBody";
  7. import { AxiosProvider } from "@/app/(main)/axios/AxiosProvider";
  8. import { SetupAxiosInterceptors } from "@/app/(main)/axios/axiosInstance";
  9. import { UploadProvider } from "@/components/UploadProvider/UploadProvider";
  10. import SessionProviderWrapper from "@/components/SessionProviderWrapper/SessionProviderWrapper";
  11. import QrCodeScannerProvider from "@/components/QrCodeScannerProvider/QrCodeScannerProvider";
  12. import { I18nProvider } from "@/i18n";
  13. import "src/app/global.css";
  14. export default async function MainLayout({
  15. children,
  16. }: {
  17. children: React.ReactNode;
  18. }) {
  19. const session = await getServerSession<AuthOptions, SessionWithTokens>(
  20. authOptions,
  21. );
  22. if (!session?.user) {
  23. redirect("/login");
  24. }
  25. // console.log(session?.user);
  26. // Verify if the session is valid
  27. if (session) {
  28. SetupAxiosInterceptors(session.accessToken);
  29. }
  30. return (
  31. <SessionProviderWrapper session={session}>
  32. <UploadProvider>
  33. {/* <CameraProvider> */}
  34. <AxiosProvider>
  35. <QrCodeScannerProvider>
  36. <MainLayoutBody
  37. appBar={
  38. <AppBar
  39. profileName={session.user.name!}
  40. avatarImageSrc={session.user.image || undefined}
  41. />
  42. }
  43. mainContent={
  44. <I18nProvider namespaces={["common"]}>
  45. <MainContentArea>{children}</MainContentArea>
  46. </I18nProvider>
  47. }
  48. />
  49. </QrCodeScannerProvider>
  50. </AxiosProvider>
  51. {/* </CameraProvider> */}
  52. </UploadProvider>
  53. </SessionProviderWrapper>
  54. );
  55. }