Skip to content
Snippets Groups Projects
Modal.component.tsx 2.69 KiB
Newer Older
Adrian Orłów's avatar
Adrian Orłów committed
import { useAppSelector } from '@/redux/hooks/useAppSelector';
import { modalSelector } from '@/redux/modal/modal.selector';
Adrian Orłów's avatar
Adrian Orłów committed
import dynamic from 'next/dynamic';
import { AccessDeniedModal } from '@/components/FunctionalArea/Modal/AccessDeniedModal/AccessDeniedModal.component';
Piotr Gawron's avatar
Piotr Gawron committed
import { AddCommentModal } from '@/components/FunctionalArea/Modal/AddCommentModal/AddCommentModal.component';
Piotr Gawron's avatar
Piotr Gawron committed
import { LicenseModal } from '@/components/FunctionalArea/Modal/LicenseModal';
import { ToSModal } from '@/components/FunctionalArea/Modal/ToSModal/ToSModal.component';
import { EditOverlayModal } from './EditOverlayModal';
Adrian Orłów's avatar
Adrian Orłów committed
import { LoginModal } from './LoginModal';
import { ErrorReportModal } from './ErrorReportModal';
import { ModalLayout } from './ModalLayout';
Adrian Orłów's avatar
Adrian Orłów committed
import { OverviewImagesModal } from './OverviewImagesModal';
import { PublicationsModal } from './PublicationsModal';
import { LoggedInMenuModal } from './LoggedInMenuModal';
Adrian Orłów's avatar
Adrian Orłów committed

const MolArtModal = dynamic(
  () => import('./MolArtModal/MolArtModal.component').then(mod => mod.MolArtModal),
  { ssr: false },
);
Adrian Orłów's avatar
Adrian Orłów committed

export const Modal = (): React.ReactNode => {
  const { isOpen, modalName } = useAppSelector(modalSelector);
Adrian Orłów's avatar
Adrian Orłów committed

  return (
    <>
      {isOpen && modalName === 'overview-images' && (
        <ModalLayout>
          <OverviewImagesModal />
        </ModalLayout>
      )}
      {isOpen && modalName === 'mol-art' && (
        <ModalLayout>
          <MolArtModal />
        </ModalLayout>
      )}
      {isOpen && modalName === 'login' && (
        <ModalLayout>
          <LoginModal />
        </ModalLayout>
Adrian Orłów's avatar
Adrian Orłów committed
      )}
      {isOpen && modalName === 'error-report' && (
        <ModalLayout>
          <ErrorReportModal />
        </ModalLayout>
      )}
Piotr Gawron's avatar
Piotr Gawron committed
      {isOpen && modalName === 'license' && (
        <ModalLayout>
          <LicenseModal />
        </ModalLayout>
      )}
      {isOpen && modalName === 'publications' && <PublicationsModal />}
      {isOpen && modalName === 'edit-overlay' && (
        <ModalLayout>
          <EditOverlayModal />
        </ModalLayout>
Adrian Orłów's avatar
Adrian Orłów committed
      )}
      {isOpen && modalName === 'logged-in-menu' && (
        <ModalLayout>
          <LoggedInMenuModal />
        </ModalLayout>
      )}
      {isOpen && modalName === 'access-denied' && (
        <ModalLayout>
          <AccessDeniedModal />
        </ModalLayout>
      )}
      {isOpen && modalName === 'terms-of-service' && (
        <ModalLayout>
          <ToSModal />
        </ModalLayout>
      )}
      {isOpen && modalName === 'select-project' && (
        <ModalLayout>
          <AccessDeniedModal />
        </ModalLayout>
      )}
Piotr Gawron's avatar
Piotr Gawron committed
      {isOpen && modalName === 'add-comment' && (
        <ModalLayout>
          <AddCommentModal />
        </ModalLayout>
      )}
Adrian Orłów's avatar
Adrian Orłów committed
  );
};