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

implemented getter for trash page

白石誠 5 лет назад
Родитель
Сommit
53a8078895

+ 3 - 4
src/client/js/components/Page/TrashPageAlert.jsx

@@ -15,9 +15,8 @@ import PageDeleteModal from '../PageDeleteModal';
 const TrashPageAlert = (props) => {
   const { t, appContainer, pageContainer } = props;
   const {
-    path, isDeleted, lastUpdateUsername, updatedAt, hasChildren, isAbleToDeleteCompletely,
+    path, isDeleted, lastUpdateUsername, updatedAt, isAbleToDeleteCompletely,
   } = pageContainer.state;
-  const { currentUser = null } = appContainer;
   const [isEmptyTrashModalShown, setIsEmptyTrashModalShown] = useState(false);
   const [isPutbackPageModalShown, setIsPutbackPageModalShown] = useState(false);
   const [isPageDeleteModalShown, setIsPageDeleteModalShown] = useState(false);
@@ -113,8 +112,8 @@ const TrashPageAlert = (props) => {
           This page is in the trash <i className="icon-trash" aria-hidden="true"></i>.
           {isDeleted && <span><br /><UserPicture user={{ username: lastUpdateUsername }} /> Deleted by {lastUpdateUsername} at {updatedAt}</span>}
         </div>
-        {(currentUser && currentUser.admin && path === '/trash' && hasChildren) && renderEmptyButton()}
-        {(isDeleted && currentUser) && renderTrashPageManagementButtons()}
+        { pageContainer.isAbleToShowEmptyButton && renderEmptyButton()}
+        { pageContainer.isAbleToShowTrashPageManagementButtons && renderTrashPageManagementButtons()}
       </div>
       {renderModals()}
     </>

+ 22 - 0
src/client/js/services/PageContainer.js

@@ -218,6 +218,28 @@ export default class PageContainer extends Container {
     return (!isUserPage && !isSharedUser);
   }
 
+  /**
+   * whether to Empty Trash Page
+   * not displayed when guest user and not on trash page
+   */
+  get isAbleToShowEmptyButton() {
+    const { currentUser } = this.appContainer;
+    const { path, hasChildren } = this.state;
+
+    return (currentUser != null && currentUser.admin && path === '/trash' && hasChildren);
+  }
+
+  /**
+   * whether to Empty Trash Page Management
+   * not displayed when guest user
+   */
+  get isAbleToShowTrashPageManagementButtons() {
+    const { currentUser } = this.appContainer;
+    const { isDeleted } = this.state;
+
+    return (isDeleted && currentUser != null);
+  }
+
   /**
    * initialize state for markdown data
    */