import React, { useMemo, useState, type JSX } from 'react';
import { useTranslation } from 'next-i18next';
import dynamic from 'next/dynamic';
import {
Modal, ModalBody, ModalHeader,
} from 'reactstrap';
import {
useDisableLinkSharing, useIsGuestUser, useIsReadOnlyUser, useIsSharedUser,
} from '~/stores-universal/context';
import { usePageAccessoriesModal, PageAccessoriesModalContents } from '~/stores/modal';
import { useIsDeviceLargerThanLg } from '~/stores/ui';
import { CustomNavDropdown, CustomNavTab } from '../CustomNavigation/CustomNav';
import CustomTabContent from '../CustomNavigation/CustomTabContent';
import ExpandOrContractButton from '../ExpandOrContractButton';
import { useAutoOpenModalByQueryParam } from './hooks';
import styles from './PageAccessoriesModal.module.scss';
const PageAttachment = dynamic(() => import('./PageAttachment'), { ssr: false });
const PageHistory = dynamic(() => import('./PageHistory').then(mod => mod.PageHistory), { ssr: false });
const ShareLink = dynamic(() => import('./ShareLink').then(mod => mod.ShareLink), { ssr: false });
export const PageAccessoriesModal = (): JSX.Element => {
const { t } = useTranslation();
const [isWindowExpanded, setIsWindowExpanded] = useState(false);
const { data: isSharedUser } = useIsSharedUser();
const { data: isGuestUser } = useIsGuestUser();
const { data: isReadOnlyUser } = useIsReadOnlyUser();
const { data: isLinkSharingDisabled } = useDisableLinkSharing();
const { data: isDeviceLargerThanLg } = useIsDeviceLargerThanLg();
const { data: status, close, selectContents } = usePageAccessoriesModal();
useAutoOpenModalByQueryParam();
const navTabMapping = useMemo(() => {
return {
[PageAccessoriesModalContents.PageHistory]: {
Icon: () => history,
Content: () => {
return ;
},
i18n: t('History'),
isLinkEnabled: () => !isGuestUser && !isSharedUser,
},
[PageAccessoriesModalContents.Attachment]: {
Icon: () => attachment,
Content: () => {
return ;
},
i18n: t('attachment_data'),
},
[PageAccessoriesModalContents.ShareLink]: {
Icon: () => share,
Content: () => {
return ;
},
i18n: t('share_links.share_link_management'),
isLinkEnabled: () => !isGuestUser && !isReadOnlyUser && !isSharedUser && !isLinkSharingDisabled,
},
};
}, [t, close, isGuestUser, isReadOnlyUser, isSharedUser, isLinkSharingDisabled]);
const buttons = useMemo(() => (
setIsWindowExpanded(true)}
contractWindow={() => setIsWindowExpanded(false)}
/>
), [close, isWindowExpanded]);
if (status == null || status.activatedContents == null) {
return <>>;
}
const { isOpened } = status;
return (
{isDeviceLargerThanLg && (
)}
{!isDeviceLargerThanLg && (
)}
);
};