Yuki Takei 2 years ago
parent
commit
469822892f
1 changed files with 30 additions and 19 deletions
  1. 30 19
      apps/app/src/server/routes/apiv3/page/create-page.ts

+ 30 - 19
apps/app/src/server/routes/apiv3/page/create-page.ts

@@ -114,6 +114,32 @@ export const createPageHandlersFactory: CreatePageHandlersFactory = (crowi) => {
   ];
   ];
 
 
 
 
+  async function determineBodyAndTags(
+      path: string,
+      _body: string | null | undefined, _tags: string[] | null | undefined,
+  ): Promise<{ body: string, tags: string[] }> {
+
+    let body: string = _body ?? '';
+    let tags: string[] = _tags ?? [];
+
+    if (_body == null) {
+      const isEnabledAttachTitleHeader = await configManager.getConfig('crowi', 'customize:isEnabledAttachTitleHeader');
+      if (isEnabledAttachTitleHeader) {
+        body += `${attachTitleHeader(path)}\n`;
+      }
+
+      const templateData = await Page.findTemplate(path);
+      if (templateData.templateTags != null) {
+        tags = templateData.templateTags;
+      }
+      if (templateData.templateBody != null) {
+        body += `${templateData.templateBody}\n`;
+      }
+    }
+
+    return { body, tags };
+  }
+
   async function saveTags({ createdPage, pageTags }: { createdPage: PageDocument, pageTags: string[] }) {
   async function saveTags({ createdPage, pageTags }: { createdPage: PageDocument, pageTags: string[] }) {
     const tagEvent = crowi.event('tag');
     const tagEvent = crowi.event('tag');
     await PageTagRelation.updatePageTags(createdPage.id, pageTags);
     await PageTagRelation.updatePageTags(createdPage.id, pageTags);
@@ -171,7 +197,7 @@ export const createPageHandlersFactory: CreatePageHandlersFactory = (crowi) => {
     validator, apiV3FormValidator,
     validator, apiV3FormValidator,
     async(req: CreatePageRequest, res: ApiV3Response) => {
     async(req: CreatePageRequest, res: ApiV3Response) => {
       const {
       const {
-        body, pageTags,
+        body: bodyByParam, pageTags: tagsByParam,
       } = req.body;
       } = req.body;
 
 
       let pathToCreate: string;
       let pathToCreate: string;
@@ -190,22 +216,7 @@ export const createPageHandlersFactory: CreatePageHandlersFactory = (crowi) => {
         }
         }
       }
       }
 
 
-      let initialTags: string[] = pageTags ?? [];
-      let initialBody = body ?? '';
-      if (body == null) {
-        const isEnabledAttachTitleHeader = await configManager.getConfig('crowi', 'customize:isEnabledAttachTitleHeader');
-        if (isEnabledAttachTitleHeader) {
-          initialBody += `${attachTitleHeader(pathToCreate)}\n`;
-        }
-
-        const templateData = await Page.findTemplate(pathToCreate);
-        if (templateData.templateTags != null) {
-          initialTags = templateData.templateTags;
-        }
-        if (templateData.templateBody != null) {
-          initialBody += `${templateData.templateBody}\n`;
-        }
-      }
+      const { body, tags } = await determineBodyAndTags(pathToCreate, bodyByParam, tagsByParam);
 
 
       let createdPage;
       let createdPage;
       try {
       try {
@@ -217,7 +228,7 @@ export const createPageHandlersFactory: CreatePageHandlersFactory = (crowi) => {
         }
         }
         createdPage = await crowi.pageService.create(
         createdPage = await crowi.pageService.create(
           pathToCreate,
           pathToCreate,
-          initialBody,
+          body,
           req.user,
           req.user,
           options,
           options,
         );
         );
@@ -227,7 +238,7 @@ export const createPageHandlersFactory: CreatePageHandlersFactory = (crowi) => {
         return res.apiv3Err(err);
         return res.apiv3Err(err);
       }
       }
 
 
-      const savedTags = await saveTags({ createdPage, pageTags: initialTags });
+      const savedTags = await saveTags({ createdPage, pageTags: tags });
 
 
       const result = {
       const result = {
         page: serializePageSecurely(createdPage),
         page: serializePageSecurely(createdPage),