import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { UncontrolledTooltip } from 'reactstrap'; import { withTranslation } from 'react-i18next'; import { isTopPage } from '@commons/util/path-utils'; import { withUnstatedContainers } from '../UnstatedUtils'; import AppContainer from '../../services/AppContainer'; import PageContainer from '../../services/PageContainer'; import PageDeleteModal from '../PageDeleteModal'; import PageRenameModal from '../PageRenameModal'; import PageDuplicateModal from '../PageDuplicateModal'; import CreateTemplateModal from '../CreateTemplateModal'; const PageManagement = (props) => { const { t, appContainer, pageContainer } = props; const { path, isDeletable, isAbleToDeleteCompletely } = pageContainer.state; const { currentUser } = appContainer; const isTopPagePath = isTopPage(path); const [isPageRenameModalShown, setIsPageRenameModalShown] = useState(false); const [isPageDuplicateModalShown, setIsPageDuplicateModalShown] = useState(false); const [isPageTemplateModalShown, setIsPageTempleteModalShown] = useState(false); const [isPageDeleteModalShown, setIsPageDeleteModalShown] = useState(false); function openPageRenameModalHandler() { setIsPageRenameModalShown(true); } function closePageRenameModalHandler() { setIsPageRenameModalShown(false); } function openPageDuplicateModalHandler() { setIsPageDuplicateModalShown(true); } function closePageDuplicateModalHandler() { setIsPageDuplicateModalShown(false); } function openPageTemplateModalHandler() { setIsPageTempleteModalShown(true); } function closePageTemplateModalHandler() { setIsPageTempleteModalShown(false); } function openPageDeleteModalHandler() { setIsPageDeleteModalShown(true); } function closePageDeleteModalHandler() { setIsPageDeleteModalShown(false); } function renderDropdownItemForNotTopPage() { return ( <>
); } function renderDropdownItemForDeletablePage() { return ( <>
); } function renderModals() { if (currentUser == null) { return null; } return ( <> ); } function renderDotsIconForCurrentUser() { return ( <> ); } function renderDotsIconForGuestUser() { return ( <> {t('Not available for guest')} ); } return ( <> {currentUser == null ? renderDotsIconForGuestUser() : renderDotsIconForCurrentUser()}
{!isTopPagePath && renderDropdownItemForNotTopPage()} {(!isTopPagePath && isDeletable) && renderDropdownItemForDeletablePage()}
{renderModals()} ); }; /** * Wrapper component for using unstated */ const PageManagementWrapper = withUnstatedContainers(PageManagement, [AppContainer, PageContainer]); PageManagement.propTypes = { t: PropTypes.func.isRequired, // i18next appContainer: PropTypes.instanceOf(AppContainer).isRequired, pageContainer: PropTypes.instanceOf(PageContainer).isRequired, }; export default withTranslation()(PageManagementWrapper);