kaori 4 лет назад
Родитель
Сommit
b7fcfe0e5a

+ 3 - 1
packages/app/src/components/PutbackPageModal.jsx

@@ -21,6 +21,7 @@ const PutBackPageModal = () => {
   const onPutBacked = pageDataToRevert.opts?.onPutBacked;
 
   const [errs, setErrs] = useState(null);
+  const [targetPath, setTargetPath] = useState(null);
 
   const [isPutbackRecursively, setIsPutbackRecursively] = useState(true);
 
@@ -47,6 +48,7 @@ const PutBackPageModal = () => {
       closePutBackPageModal();
     }
     catch (err) {
+      setTargetPath(err.data);
       setErrs([err]);
     }
   }
@@ -79,7 +81,7 @@ const PutBackPageModal = () => {
         </div>
       </ModalBody>
       <ModalFooter>
-        <ApiErrorMessageList errs={errs} />
+        <ApiErrorMessageList errs={errs} targetPath={targetPath} />
         <button type="button" className="btn btn-info" onClick={putbackPageButtonHandler}>
           <i className="icon-action-undo mr-2" aria-hidden="true"></i> { t('Put Back') }
         </button>

+ 10 - 1
packages/app/src/server/models/errors.ts

@@ -1,3 +1,12 @@
 import ExtensibleCustomError from 'extensible-custom-error';
 
-export class PathAlreadyExistsError extends ExtensibleCustomError {}
+export class PathAlreadyExistsError extends ExtensibleCustomError {
+
+  targetPath: string;
+
+  constructor(message: string, targetPath: string) {
+    super(message);
+    this.targetPath = targetPath;
+  }
+
+}

+ 1 - 1
packages/app/src/server/routes/page.js

@@ -1265,7 +1265,7 @@ module.exports = function(crowi, app) {
     catch (err) {
       if (err instanceof PathAlreadyExistsError) {
         logger.error('Page exists', err);
-        return res.json(ApiResponse.error(err, 'already_exists'));
+        return res.json(ApiResponse.error(err, 'already_exists', err.targetPath));
       }
       logger.error('Error occured while get setting', err);
       return res.json(ApiResponse.error(err));

+ 2 - 4
packages/app/src/server/service/page.ts

@@ -1883,8 +1883,7 @@ class PageService {
 
     // throw if any page already exists
     if (originPage != null) {
-      const err:{code: string, targetPath: string} = { code: 'already_exists', targetPath: originPage.path };
-      throw new PathAlreadyExistsError(err);
+      throw new PathAlreadyExistsError('already_exists', originPage.path);
     }
 
     // 2. Revert target
@@ -1978,8 +1977,7 @@ class PageService {
     const newPath = Page.getRevertDeletedPageName(page.path);
     const originPage = await Page.findByPath(newPath);
     if (originPage != null) {
-      const err:{code: string, targetPath: string} = { code: 'already_exists', targetPath: originPage.path };
-      throw new PathAlreadyExistsError(err);
+      throw new PathAlreadyExistsError('already_exists', originPage.path);
     }
 
     if (isRecursively) {