itizawa 5 лет назад
Родитель
Сommit
3e101c745e

+ 2 - 1
resource/locales/en-US/translation.json

@@ -332,7 +332,8 @@
     "activate_user_success": "Succeeded to activating {{username}}",
     "deactivate_user_success": "Succeeded to deactivate {{username}}",
     "remove_user_success": "Succeeded to removing {{username}} ",
-    "remove_external_user_success": "Succeeded to remove {{accountId}} "
+    "remove_external_user_success": "Succeeded to remove {{accountId}} ",
+    "empty_trash_success": "Succeeded to empty trash"
   },
   "template": {
     "modal_label": {

+ 2 - 1
resource/locales/ja/translation.json

@@ -330,7 +330,8 @@
     "activate_user_success": "{{username}}を有効化しました",
     "deactivate_user_success": "{{username}}を無効化しました",
     "remove_user_success": "{{username}}を削除しました",
-    "remove_external_user_success": "{{accountId}}を削除しました "
+    "remove_external_user_success": "{{accountId}}を削除しました",
+    "empty_trash_success": "ゴミ箱を空にしました"
   },
   "template": {
     "modal_label": {

+ 4 - 4
src/client/js/components/EmptyTrashModal.jsx

@@ -14,7 +14,7 @@ import AppContainer from '../services/AppContainer';
 
 const EmptyTrashModal = (props) => {
   const {
-    t, isOpen, toggle,
+    t, isOpen, toggle, onClickSubmit,
   } = props;
 
   return (
@@ -27,9 +27,8 @@ const EmptyTrashModal = (props) => {
       </ModalBody>
       <ModalFooter>
         {/* TODO add error message */}
-        <button type="submit" className="btn btn-danger">
-          <i className="icon-trash" aria-hidden="true"></i>
-            Empty
+        <button type="button" className="btn btn-danger" onClick={onClickSubmit}>
+          <i className="icon-trash mr-2" aria-hidden="true"></i>Empty
         </button>
       </ModalFooter>
     </Modal>
@@ -52,6 +51,7 @@ EmptyTrashModal.propTypes = {
 
   isOpen: PropTypes.bool.isRequired,
   toggle: PropTypes.func.isRequired,
+  onClickSubmit: PropTypes.func.isRequired,
 };
 
 export default withTranslation()(EmptyTrashModalWrapper);

+ 13 - 1
src/client/js/components/Page/TrashPageAlert.jsx

@@ -2,6 +2,7 @@ import React, { useState } from 'react';
 import PropTypes from 'prop-types';
 
 import { withTranslation } from 'react-i18next';
+import { toastSuccess, toastError } from '../../util/apiNotification';
 
 import { createSubscribedElement } from '../UnstatedUtils';
 import AppContainer from '../../services/AppContainer';
@@ -26,6 +27,17 @@ const TrashPageAlert = (props) => {
     setIsEmptyTrashModalShown(false);
   }
 
+  async function onClickDeleteBtn() {
+    try {
+      await appContainer.apiv3Delete('/pages/empty-trash');
+      toastSuccess(t('toaster.empty_trash_success'));
+      closeEmptyTrashModal();
+    }
+    catch (err) {
+      toastError(err);
+    }
+  }
+
   function renderEmptyButton() {
     return (
       <button
@@ -74,7 +86,7 @@ const TrashPageAlert = (props) => {
         {(currentUser.admin && path === '/trash' && hasChildren) && renderEmptyButton()}
         {(isDeleted && currentUser != null) && renderTrashPageManagementButtons()}
       </div>
-      <EmptyTrashModal isOpen={isEmptyTrashModalShown} toggle={closeEmptyTrashModal} />
+      <EmptyTrashModal isOpen={isEmptyTrashModalShown} toggle={closeEmptyTrashModal} onClickSubmit={onClickDeleteBtn} />
     </>
   );
 };