import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import { CopyToClipboard } from 'react-copy-to-clipboard'; import { Dropdown, DropdownToggle, DropdownMenu, DropdownItem, } from 'reactstrap'; import { encodeSpaces } from '@commons/util/path-utils'; import { withUnstatedContainers } from '../UnstatedUtils'; import RevisionComparerContainer from '../../services/RevisionComparerContainer'; import RevisionDiff from '../PageHistory/RevisionDiff'; /* eslint-disable react/prop-types */ const DropdownItemContents = ({ title, contents }) => ( <>
{title}
{contents}
); /* eslint-enable react/prop-types */ const RevisionComparer = (props) => { const [dropdownOpen, setDropdownOpen] = useState(false); const { t, revisionComparerContainer } = props; function toggleDropdown() { setDropdownOpen(!dropdownOpen); } const pagePathUrl = () => { const { origin } = window.location; const { path } = revisionComparerContainer.pageContainer.state; const { sourceRevision, targetRevision } = revisionComparerContainer.state; const url = new URL(path, origin); if (sourceRevision != null && targetRevision != null) { const urlParams = `${sourceRevision._id}...${targetRevision._id}`; url.searchParams.set('compare', urlParams); } return encodeSpaces(decodeURI(url)); }; const { sourceRevision, targetRevision } = revisionComparerContainer.state; if (sourceRevision == null || targetRevision == null) { return null; } const isNodiff = sourceRevision._id === targetRevision._id; return (

{ t('page_history.comparing_revisions') }

toggleDropdown()} > {/* Page path URL */}
{ isNodiff ? ( {t('No diff')} ) : ( ) }
); }; /** * Wrapper component for using unstated */ const RevisionComparerWrapper = withUnstatedContainers(RevisionComparer, [RevisionComparerContainer]); RevisionComparer.propTypes = { t: PropTypes.func.isRequired, // i18next revisionComparerContainer: PropTypes.instanceOf(RevisionComparerContainer).isRequired, revisions: PropTypes.array, }; export default withTranslation()(RevisionComparerWrapper);