Преглед изворни кода

check is deletable in server

yuken пре 3 година
родитељ
комит
c1da947f62

+ 1 - 3
packages/app/src/components/EmptyTrashModal.tsx

@@ -26,10 +26,8 @@ const EmptyTrashModal: FC = () => {
       return;
     }
 
-    const pageIds = emptyTrashModalData.pages.map(p => p.data._id);
-
     try {
-      await apiv3Delete('/pages/empty-trash', { pageIds });
+      await apiv3Delete('/pages/empty-trash');
       const onEmptiedTrash = emptyTrashModalData.opts?.onEmptiedTrash;
       if (onEmptiedTrash != null) {
         onEmptiedTrash();

+ 8 - 14
packages/app/src/server/routes/apiv3/pages.js

@@ -547,29 +547,23 @@ module.exports = (crowi) => {
    */
   router.delete('/empty-trash', accessTokenParser, loginRequired, adminRequired, csrf, apiV3FormValidator, async(req, res) => {
     const options = {};
-    const { pageIds } = req.body;
-    // const { pageIdToRevisionIdMap } = req.body;
-    // const pageIds = Object.keys(pageIdToRevisionIdMap);
 
-    logger.error(`pageIds: ${pageIds}`);
+    const pagesInTrash = await Page.findChildrenByParentPathOrIdAndViewer('/trash', req.user);
 
-    let pagesToDelete;
-
-    try {
-      pagesToDelete = await Page.findByIdsAndViewer(pageIds, req.user, null, true);
-    }
-    catch (err) {
-      logger.error('Failed to find pages to delete.', err);
-      return res.apiv3Err(new ErrorV3('Failed to find pages to delete.'));
-    }
+    logger.error(`trash page count: ${pagesInTrash.length}`);
 
-    const deletablePages = crowi.pageService.filterPagesByCanDeleteCompletely(pagesToDelete, req.user, true);
+    const deletablePages = crowi.pageService.filterPagesByCanDeleteCompletely(pagesInTrash, req.user, true);
 
     if (deletablePages.length === 0) {
       const msg = 'No pages can be deleted.';
       return res.apiv3Err(new ErrorV3(msg), 500);
     }
 
+    if (deletablePages.length < pagesInTrash.length) {
+      const msg = 'Some pages can not be deleted.';
+      return res.apiv3Err(new ErrorV3(msg), 500);
+    }
+
     try {
       const pages = await crowi.pageService.emptyTrashPage(req.user, options);
       return res.apiv3({ pages });