Viewing File: /home/ubuntu/voice-assistant-frontend/src/components/layouts/MainLayout.jsx

import React, { useEffect, useState } from "react";
import AuthPageHeader from "./Header/AuthPageHeader";
import LandingPageHeader from "./Header/LandingPageHeader";
import { useDispatch, useSelector } from "react-redux";
import { profileStart } from "../../store/slices/AdminSlice";
import PageLoader from "../Helper/PageLoader";
import SomethingWentWrong from "../Helper/SomethingWentWrong";
import LandingFooterIndex from "./Footer/LandingFooterIndex";

const MainLayout = (props) => {
  return (
    <>
      <div className="main-wrapper">{props.children}</div>
    </>
  );
};

const AdminLayout = (props) => {

  const dispatch = useDispatch();
  const profile = useSelector((state) => state.admin.profile);

  useEffect(() => {
    if (!Object.keys(profile.data).length > 0) dispatch(profileStart());
  }, []);

  return (
    <>
      {profile.loading ? (
        <PageLoader />
      ) : Object.keys(profile.data).length > 0 ? (
        <>
          <AuthPageHeader />
          <div className="main-wrapper">{props.children}</div>
          {/* <EmptyFooter /> */}
        </>
      ) : (
        <div className="main-wrapper">
          <SomethingWentWrong
            buttonText="Retry"
            handleClick={() => dispatch(profileStart())}
          />
        </div>
      )}
    </>
  );
};

const LandingPageLayout = (props) => {

  const token = localStorage?.getItem("token") || sessionStorage?.getItem("token");

  return (
    <>
      {!token ? <LandingPageHeader /> : <AuthPageHeader />}
      <div className="main-wrapper">{props.children}</div>
      <LandingFooterIndex/>
    </>
  );
};

const StaticPageLayout = (props) => {

  const profile = useSelector((state) => state.admin.profile);
  const token = localStorage?.getItem("token") || sessionStorage?.getItem("token");

  return (
    <>
      {profile.buttonDisable ? (
        <PageLoader />
      ) : (Object.keys(profile.data).length > 0 && token) ? (
        <>
          <AuthPageHeader />
          <div className="main-wrapper">{props.children}</div>
        </>
      ) : (
        <>
          <LandingPageHeader />
          <div className="main-wrapper">{props.children}</div>
          <LandingFooterIndex/>
        </>
      )}
    </>
  )
}

export { MainLayout, AdminLayout, LandingPageLayout, StaticPageLayout };
Back to Directory File Manager