Просмотр исходного кода

modified based off the first FB

Shunm634-source 3 лет назад
Родитель
Сommit
ad54a8dbec

+ 2 - 4
packages/app/src/components/PageHistory.jsx

@@ -1,4 +1,5 @@
-import React, { useState, useCallback, useEffect } from 'react';
+import React, { useState, useEffect } from 'react';
+
 import { useCurrentPageId } from '~/stores/context';
 import { useSWRxPageRevisions } from '~/stores/page';
 import loggerFactory from '~/utils/logger';
@@ -59,11 +60,8 @@ const PageHistory = () => {
         {pager()}
       </div>
       <RevisionComparer
-        revisions={revisionsData.revisions}
         sourceRevision={sourceRevision}
         targetRevision={targetRevision}
-        changeSourceRevision={setSourceRevision}
-        changeTargetRevision={setTargetRevision}
         currentPageId={currentPageId}
       />
     </div>

+ 5 - 4
packages/app/src/components/PageHistory/PageRevisionTable.jsx

@@ -14,7 +14,7 @@ class PageRevisionTable extends React.Component {
    * @param {boolean} hasDiff whether revision has difference to previousRevision
    * @param {boolean} isContiguousNodiff true if the current 'hasDiff' and one of previous row is both false
    */
-  renderRow(revision, previousRevision, latestRevision, oldestRevision, hasDiff, isContiguousNodiff) {
+  renderRow(revision, previousRevision, latestRevision, isOldestRevision, hasDiff) {
     const {
       t, sourceRevision, targetRevision, changeSourceRevision, changeTargetRevision,
     } = this.props;
@@ -55,7 +55,7 @@ class PageRevisionTable extends React.Component {
                     type="button"
                     className="btn btn-outline-secondary btn-sm"
                     onClick={handleComparePreviousRevisionButton}
-                    disabled={revision === oldestRevision}
+                    disabled={isOldestRevision}
                   >
                     {t('page_history.compare_previous')}
                   </button>
@@ -124,13 +124,14 @@ class PageRevisionTable extends React.Component {
         previousRevision = revision; // if it is the first revision, show full text as diff text
       }
 
+      let isOldestRevision = false;
+      if (revision === oldestRevision) isOldestRevision = true;
 
       const hasDiff = revision.hasDiffToPrev !== false; // set 'true' if undefined for backward compatibility
-      const isContiguousNodiff = !hasDiff && !hasDiffPrev;
 
       hasDiffPrev = hasDiff;
 
-      return this.renderRow(revision, previousRevision, latestRevision, oldestRevision, hasDiff, isContiguousNodiff);
+      return this.renderRow(revision, previousRevision, latestRevision, isOldestRevision, hasDiff);
     });
 
     return (

+ 2 - 27
packages/app/src/components/RevisionComparer/RevisionComparer.jsx

@@ -1,4 +1,4 @@
-import React, { useState, useCallback, useEffect } from 'react';
+import React, { useState, useEffect } from 'react';
 
 import { pagePathUtils } from '@growi/core';
 import PropTypes from 'prop-types';
@@ -31,8 +31,7 @@ const RevisionComparer = (props) => {
   const { data: currentPagePath = '' } = useCurrentPagePath();
   const [dropdownOpen, setDropdownOpen] = useState(false);
   const {
-    sourceRevision, targetRevision, revisions,
-    changeSourceRevision, changeTargetRevision,
+    sourceRevision, targetRevision,
     currentPageId,
   } = props;
 
@@ -40,27 +39,6 @@ const RevisionComparer = (props) => {
     setDropdownOpen(!dropdownOpen);
   }
 
-  function getRevisionIDsToCompareAsParam() {
-    const searchParams = {};
-    for (const param of window.location.search?.substr(1)?.split('&')) {
-      const [k, v] = param.split('=');
-      searchParams[k] = v;
-    }
-    if (!searchParams.compare) {
-      return [];
-    }
-
-    return searchParams.compare.split('...') || [];
-  }
-
-  useEffect(() => {
-    const { sourceRevisionId, targetRevisionId } = getRevisionIDsToCompareAsParam();
-    revisions.forEach((element) => {
-      if (element._id === sourceRevisionId) changeSourceRevision(element);
-      if (element._id === targetRevisionId) changeTargetRevision(element);
-    });
-  });
-
   const generateURL = (pathName) => {
     const { origin } = window.location;
 
@@ -135,11 +113,8 @@ const RevisionComparer = (props) => {
 };
 
 RevisionComparer.propTypes = {
-  revisions: PropTypes.array,
   sourceRevision: PropTypes.instanceOf(Object),
   targetRevision: PropTypes.instanceOf(Object),
-  changeSourceRevision: PropTypes.func.isRequired,
-  changeTargetRevision: PropTypes.func.isRequired,
   currentPageId: PropTypes.string,
 };