ryoji-s 2 лет назад
Родитель
Сommit
feaa7eb728

+ 1 - 2
apps/app/src/hooks/use-on-template-button-clicked.ts → apps/app/src/client/services/use-on-template-button-clicked.ts

@@ -3,7 +3,6 @@ import { useCallback, useState } from 'react';
 import { useRouter } from 'next/router';
 import { useRouter } from 'next/router';
 
 
 import { createPage, exist } from '~/client/services/page-operation';
 import { createPage, exist } from '~/client/services/page-operation';
-import { toastError } from '~/client/util/toastr';
 import { LabelType } from '~/interfaces/template';
 import { LabelType } from '~/interfaces/template';
 
 
 export const useOnTemplateButtonClicked = (
 export const useOnTemplateButtonClicked = (
@@ -39,7 +38,7 @@ export const useOnTemplateButtonClicked = (
       router.push(`${path}#edit`);
       router.push(`${path}#edit`);
     }
     }
     catch (err) {
     catch (err) {
-      toastError(err);
+      throw err;
     }
     }
     finally {
     finally {
       setIsPageCreating(false);
       setIsPageCreating(false);

+ 13 - 3
apps/app/src/components/CreateTemplateModal.tsx

@@ -1,10 +1,11 @@
-import React from 'react';
+import React, { useCallback } from 'react';
 
 
 import { pathUtils } from '@growi/core/dist/utils';
 import { pathUtils } from '@growi/core/dist/utils';
 import { useTranslation } from 'next-i18next';
 import { useTranslation } from 'next-i18next';
 import { Modal, ModalHeader, ModalBody } from 'reactstrap';
 import { Modal, ModalHeader, ModalBody } from 'reactstrap';
 
 
-import { useOnTemplateButtonClicked } from '~/hooks/use-on-template-button-clicked';
+import { useOnTemplateButtonClicked } from '~/client/services/use-on-template-button-clicked';
+import { toastError } from '~/client/util/toastr';
 import { TargetType, LabelType } from '~/interfaces/template';
 import { TargetType, LabelType } from '~/interfaces/template';
 
 
 
 
@@ -56,6 +57,15 @@ export const CreateTemplateModal: React.FC<CreateTemplateModalProps> = ({
 
 
   const { onClickHandler: onClickTemplateButton, isPageCreating } = useOnTemplateButtonClicked(path);
   const { onClickHandler: onClickTemplateButton, isPageCreating } = useOnTemplateButtonClicked(path);
 
 
+  const onClickTemplateButtonHandler = useCallback(async(label: LabelType) => {
+    try {
+      await onClickTemplateButton(label);
+    }
+    catch (err) {
+      toastError(err);
+    }
+  }, [onClickTemplateButton]);
+
   const parentPath = pathUtils.addTrailingSlash(path);
   const parentPath = pathUtils.addTrailingSlash(path);
 
 
   const renderTemplateCard = (target: TargetType, label: LabelType) => (
   const renderTemplateCard = (target: TargetType, label: LabelType) => (
@@ -64,7 +74,7 @@ export const CreateTemplateModal: React.FC<CreateTemplateModalProps> = ({
         target={target}
         target={target}
         label={label}
         label={label}
         isPageCreating={isPageCreating}
         isPageCreating={isPageCreating}
-        onClickHandler={() => onClickTemplateButton(label)}
+        onClickHandler={() => onClickTemplateButtonHandler(label)}
       />
       />
     </div>
     </div>
   );
   );

+ 14 - 3
apps/app/src/components/Sidebar/PageCreateButton/PageCreateButton.tsx

@@ -1,9 +1,11 @@
-import React, { useState } from 'react';
+import React, { useState, useCallback } from 'react';
 
 
 import { pagePathUtils } from '@growi/core/dist/utils';
 import { pagePathUtils } from '@growi/core/dist/utils';
 import { format } from 'date-fns';
 import { format } from 'date-fns';
 
 
-import { useOnTemplateButtonClicked } from '~/hooks/use-on-template-button-clicked';
+import { useOnTemplateButtonClicked } from '~/client/services/use-on-template-button-clicked';
+import { toastError } from '~/client/util/toastr';
+import { LabelType } from '~/interfaces/template';
 import { useCurrentUser } from '~/stores/context';
 import { useCurrentUser } from '~/stores/context';
 import { useSWRxCurrentPage } from '~/stores/page';
 import { useSWRxCurrentPage } from '~/stores/page';
 
 
@@ -26,6 +28,15 @@ export const PageCreateButton = React.memo((): JSX.Element => {
   const { onClickHandler: onClickTodaysButton, isPageCreating: isTodaysPageCreating } = useOnTodaysButtonClicked(todaysPath, currentUser);
   const { onClickHandler: onClickTodaysButton, isPageCreating: isTodaysPageCreating } = useOnTodaysButtonClicked(todaysPath, currentUser);
   const { onClickHandler: onClickTemplateButton, isPageCreating: isTemplatePageCreating } = useOnTemplateButtonClicked(currentPage?.path);
   const { onClickHandler: onClickTemplateButton, isPageCreating: isTemplatePageCreating } = useOnTemplateButtonClicked(currentPage?.path);
 
 
+  const onClickTemplateButtonHandler = useCallback(async(label: LabelType) => {
+    try {
+      await onClickTemplateButton(label);
+    }
+    catch (err) {
+      toastError(err);
+    }
+  }, [onClickTemplateButton]);
+
   const onMouseEnterHandler = () => {
   const onMouseEnterHandler = () => {
     setIsHovered(true);
     setIsHovered(true);
   };
   };
@@ -58,7 +69,7 @@ export const PageCreateButton = React.memo((): JSX.Element => {
             todaysPath={todaysPath}
             todaysPath={todaysPath}
             onClickCreateNewPageButtonHandler={onClickNewButton}
             onClickCreateNewPageButtonHandler={onClickNewButton}
             onClickCreateTodaysButtonHandler={onClickTodaysButton}
             onClickCreateTodaysButtonHandler={onClickTodaysButton}
-            onClickTemplateButtonHandler={onClickTemplateButton}
+            onClickTemplateButtonHandler={onClickTemplateButtonHandler}
           />
           />
         </div>
         </div>
       )}
       )}