FPSMS-frontend
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

62 строки
2.1 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 DevicePresenceReporterHost from "@/components/DevicePresence/DevicePresenceReporterHost";
  13. import { I18nProvider } from "@/i18n";
  14. import "src/app/global.css";
  15. export default async function MainLayout({
  16. children,
  17. }: {
  18. children: React.ReactNode;
  19. }) {
  20. const session = await getServerSession<AuthOptions, SessionWithTokens>(
  21. authOptions,
  22. );
  23. if (!session?.user) {
  24. redirect("/login");
  25. }
  26. // console.log(session?.user);
  27. // Verify if the session is valid
  28. if (session) {
  29. SetupAxiosInterceptors(session.accessToken);
  30. }
  31. return (
  32. <SessionProviderWrapper session={session}>
  33. <DevicePresenceReporterHost />
  34. <UploadProvider>
  35. {/* <CameraProvider> */}
  36. <AxiosProvider>
  37. <QrCodeScannerProvider>
  38. <MainLayoutBody
  39. appBar={
  40. <AppBar
  41. profileName={session.user.name!}
  42. avatarImageSrc={session.user.image || undefined}
  43. />
  44. }
  45. mainContent={
  46. <I18nProvider namespaces={["navigation", "common"]}>
  47. <MainContentArea>{children}</MainContentArea>
  48. </I18nProvider>
  49. }
  50. />
  51. </QrCodeScannerProvider>
  52. </AxiosProvider>
  53. {/* </CameraProvider> */}
  54. </UploadProvider>
  55. </SessionProviderWrapper>
  56. );
  57. }