takeru0001 5 лет назад
Родитель
Сommit
68aa5603db

+ 2 - 2
src/client/js/components/PageRenameModal.jsx

@@ -119,8 +119,8 @@ const PageRenameModal = (props) => {
         isRenameMetadata,
       );
 
-      const { parentPage } = response.data;
-      const url = new URL(parentPage.path, 'https://dummy');
+      const { page } = response.data;
+      const url = new URL(page.path, 'https://dummy');
       url.searchParams.append('renamedFrom', path);
       if (isRenameRedirect) {
         url.searchParams.append('withRedirect', true);

+ 4 - 5
src/server/models/page.js

@@ -1300,12 +1300,11 @@ module.exports = function(crowi) {
       return this.rename(page, newPagePath, user, options);
     });
 
-    const promiseResults = await Promise.allSettled(promise);
-    const result = promiseResults.map((promiseResult) => {
-      return promiseResult.value.result;
-    });
+    await Promise.allSettled(promise);
+
+    targetPage.path = newPagePathPrefix;
+    return targetPage;
 
-    return result;
   };
 
   pageSchema.statics.findListByPathsArray = async function(paths) {

+ 9 - 9
src/server/routes/apiv3/pages.js

@@ -378,7 +378,6 @@ module.exports = (crowi) => {
       return res.apiv3Err(new ErrorV3(`${newPagePath} already exists`, 'already_exists'), 409);
     }
 
-    const result = {};
     let page;
 
     try {
@@ -393,10 +392,10 @@ module.exports = (crowi) => {
       }
 
       if (isRecursively) {
-        result.pages = await Page.renameRecursively(page, newPagePath, req.user, options);
+        page = await Page.renameRecursively(page, newPagePath, req.user, options);
       }
       else {
-        result.page = await Page.rename(page, newPagePath, req.user, options);
+        page = await Page.rename(page, newPagePath, req.user, options);
       }
     }
     catch (err) {
@@ -404,8 +403,7 @@ module.exports = (crowi) => {
       return res.apiv3Err(new ErrorV3('Failed to update page.', 'unknown'), 500);
     }
 
-    page.path = newPagePath;
-    result.parentPage = page;
+    const result = { page: serializePageSecurely(page) };
 
     try {
       // global notification
@@ -534,15 +532,17 @@ module.exports = (crowi) => {
       return res.apiv3Err(new ErrorV3('Not Founded the page', 'notfound_or_forbidden'), 404);
     }
 
-    let result;
+    let newParentPage;
 
     if (isRecursively) {
-      result = await crowi.pageService.duplicateRecursively(page, newPagePath, req.user);
+      newParentPage = await crowi.pageService.duplicateRecursively(page, newPagePath, req.user);
     }
     else {
-      result = await crowi.pageService.duplicate(page, newPagePath, req.user);
+      newParentPage = await crowi.pageService.duplicate(page, newPagePath, req.user);
     }
 
+    const result = { page: serializePageSecurely(newParentPage) };
+
     page.path = newPagePath;
     try {
       await globalNotificationService.fire(GlobalNotificationSetting.EVENT.PAGE_CREATE, page, req.user);
@@ -551,7 +551,7 @@ module.exports = (crowi) => {
       logger.error('Create grobal notification failed', err);
     }
 
-    return res.apiv3({ result });
+    return res.apiv3(result);
   });
 
   /**

+ 7 - 4
src/server/service/page.js

@@ -83,13 +83,16 @@ class PageService {
       const newPagePath = page.path.replace(pathRegExp, newPagePathPrefix);
       return this.duplicate(page, newPagePath, user);
     });
-    const promiseResults = await Promise.allSettled(promise);
-    const result = promiseResults.map((promiseResult) => {
-      return promiseResult.value;
+
+    const newPath = page.path.replace(pathRegExp, newPagePathPrefix);
+
+    const results = await Promise.allSettled(promise);
+    const newParentpage = results.find((result) => {
+      return result.value.path === newPath;
     });
 
     // TODO GW-4634 use stream
-    return result;
+    return newParentpage.value;
   }