فهرست منبع

change use-create-page-and-transit to use-create-page

Futa Arai 1 سال پیش
والد
کامیت
4380ed6614

+ 1 - 2
apps/app/src/client/services/create-page/index.ts

@@ -1,3 +1,2 @@
-export * from './create-page';
-export * from './use-create-page-and-transit';
+export * from './use-create-page';
 export * from './use-create-template-page';

+ 14 - 14
apps/app/src/client/services/create-page/use-create-page-and-transit.tsx → apps/app/src/client/services/create-page/use-create-page.tsx

@@ -26,8 +26,8 @@ type OnAborted = () => void;
 type OnTerminated = () => void;
 
 export type CreatePageAndTransitOpts = {
-  shouldCheckPageExists?: boolean,
-  shouldTransit?: boolean,
+  skipPageExistenceCheck?: boolean,
+  skipTransition?: boolean,
   onCreationStart?: OnCreated,
   onCreated?: OnCreated,
   onAborted?: OnAborted,
@@ -41,10 +41,10 @@ type CreatePageAndTransit = (
 
 type UseCreatePageAndTransit = () => {
   isCreating: boolean,
-  createAndTransit: CreatePageAndTransit,
+  create: CreatePageAndTransit,
 };
 
-export const useCreatePageAndTransit: UseCreatePageAndTransit = () => {
+export const useCreatePage: UseCreatePageAndTransit = () => {
 
   const router = useRouter();
   const { t } = useTranslation();
@@ -55,22 +55,22 @@ export const useCreatePageAndTransit: UseCreatePageAndTransit = () => {
 
   const [isCreating, setCreating] = useState(false);
 
-  const createAndTransit: CreatePageAndTransit = useCallback(async(params, opts = {}) => {
+  const create: CreatePageAndTransit = useCallback(async(params, opts = {}) => {
     const {
-      shouldCheckPageExists,
+      skipPageExistenceCheck,
       onCreationStart, onCreated, onAborted, onTerminated,
     } = opts;
-    const shouldTransit = opts.shouldTransit ?? true;
+    const skipTransition = opts.skipTransition ?? false;
 
     // check the page existence
-    if (shouldCheckPageExists && params.path != null) {
+    if (!skipPageExistenceCheck && params.path != null) {
       const pagePath = params.path;
 
       try {
         const { isExist } = await exist(pagePath);
 
         if (isExist) {
-          if (shouldTransit) {
+          if (!skipTransition) {
             // routing
             if (pagePath !== currentPagePath) {
               await router.push(`${pagePath}#edit`);
@@ -92,7 +92,7 @@ export const useCreatePageAndTransit: UseCreatePageAndTransit = () => {
       }
     }
 
-    const _createAndTransit = async(onlyInheritUserRelatedGrantedGroups?: boolean) => {
+    const _create = async(onlyInheritUserRelatedGrantedGroups?: boolean) => {
       try {
         setCreating(true);
         onCreationStart?.();
@@ -102,7 +102,7 @@ export const useCreatePageAndTransit: UseCreatePageAndTransit = () => {
 
         closeGrantedGroupsInheritanceSelectModal();
 
-        if (shouldTransit) {
+        if (!skipTransition) {
           await router.push(`/${response.page._id}#edit`);
           mutateEditorMode(EditorMode.Editor);
         }
@@ -123,16 +123,16 @@ export const useCreatePageAndTransit: UseCreatePageAndTransit = () => {
       const { isNonUserRelatedGroupsGranted } = await getIsNonUserRelatedGroupsGranted(params.parentPath);
       if (isNonUserRelatedGroupsGranted) {
         // create and transit request will be made from modal
-        openGrantedGroupsInheritanceSelectModal(_createAndTransit);
+        openGrantedGroupsInheritanceSelectModal(_create);
         return;
       }
     }
 
-    await _createAndTransit();
+    await _create();
   }, [currentPagePath, mutateEditorMode, router, openGrantedGroupsInheritanceSelectModal, closeGrantedGroupsInheritanceSelectModal, t]);
 
   return {
     isCreating,
-    createAndTransit,
+    create,
   };
 };

+ 4 - 5
apps/app/src/client/services/create-page/use-create-template-page.ts

@@ -8,7 +8,7 @@ import type { LabelType } from '~/interfaces/template';
 import { useCurrentPagePath } from '~/stores/page';
 
 
-import { useCreatePageAndTransit } from './use-create-page-and-transit';
+import { useCreatePage } from './use-create-page';
 
 type UseCreateTemplatePage = () => {
   isCreatable: boolean,
@@ -20,19 +20,18 @@ export const useCreateTemplatePage: UseCreateTemplatePage = () => {
 
   const { data: currentPagePath, isLoading: isLoadingPagePath } = useCurrentPagePath();
 
-  const { isCreating, createAndTransit } = useCreatePageAndTransit();
+  const { isCreating, create } = useCreatePage();
   const isCreatable = currentPagePath != null && isCreatablePage(normalizePath(`${currentPagePath}/_template`));
 
   const createTemplate = useCallback(async(label: LabelType) => {
     if (isLoadingPagePath || !isCreatable) return;
 
-    return createAndTransit(
+    return create(
       {
         path: normalizePath(`${currentPagePath}/${label}`), parentPath: currentPagePath, wip: false, origin: Origin.View,
       },
-      { shouldCheckPageExists: true },
     );
-  }, [currentPagePath, isCreatable, isLoadingPagePath, createAndTransit]);
+  }, [currentPagePath, isCreatable, isLoadingPagePath, create]);
 
   return {
     isCreatable,

+ 4 - 5
apps/app/src/components/Navbar/PageEditorModeManager.tsx

@@ -4,7 +4,7 @@ import { Origin } from '@growi/core';
 import { normalizePath } from '@growi/core/dist/utils/path-utils';
 import { useTranslation } from 'next-i18next';
 
-import { useCreatePageAndTransit } from '~/client/services/create-page';
+import { useCreatePage } from '~/client/services/create-page';
 import { toastError } from '~/client/util/toastr';
 import { useIsNotFound } from '~/stores/page';
 import { EditorMode, useEditorMode, useIsDeviceLargerThanMd } from '~/stores/ui';
@@ -68,7 +68,7 @@ export const PageEditorModeManager = (props: Props): JSX.Element => {
   const { data: isDeviceLargerThanMd } = useIsDeviceLargerThanMd();
   const { data: currentPageYjsData } = useCurrentPageYjsData();
 
-  const { isCreating, createAndTransit } = useCreatePageAndTransit();
+  const { isCreating, create } = useCreatePage();
 
   const editButtonClickedHandler = useCallback(async() => {
     if (isNotFound == null || isNotFound === false) {
@@ -78,17 +78,16 @@ export const PageEditorModeManager = (props: Props): JSX.Element => {
 
     try {
       const parentPath = path != null ? normalizePath(path.split('/').slice(0, -1).join('/')) : undefined; // does not have to exist
-      await createAndTransit(
+      await create(
         {
           path, parentPath, wip: shouldCreateWipPage(path), origin: Origin.View,
         },
-        { shouldCheckPageExists: true },
       );
     }
     catch (err) {
       toastError(t('toaster.create_failed', { target: path }));
     }
-  }, [createAndTransit, isNotFound, mutateEditorMode, path, t]);
+  }, [create, isNotFound, mutateEditorMode, path, t]);
 
   const _isBtnDisabled = isCreating || isBtnDisabled;
 

+ 8 - 9
apps/app/src/components/PageCreateModal.tsx

@@ -12,9 +12,8 @@ import {
 import { debounce } from 'throttle-debounce';
 
 import { useCreateTemplatePage } from '~/client/services/create-page';
-import { useCreatePageAndTransit } from '~/client/services/create-page/use-create-page-and-transit';
+import { useCreatePage } from '~/client/services/create-page/use-create-page';
 import { useToastrOnError } from '~/client/services/use-toastr-on-error';
-import { apiv3Get } from '~/client/util/apiv3-client';
 import { useCurrentUser, useIsSearchServiceReachable } from '~/stores/context';
 import { usePageCreateModal } from '~/stores/modal';
 
@@ -37,7 +36,7 @@ const PageCreateModal: React.FC = () => {
   const path = pageCreateModalData?.path;
   const isOpened = pageCreateModalData?.isOpened ?? false;
 
-  const { createAndTransit } = useCreatePageAndTransit();
+  const { create } = useCreatePage();
   const { createTemplate } = useCreateTemplatePage();
 
   const { data: isReachable } = useIsSearchServiceReachable();
@@ -95,28 +94,28 @@ const PageCreateModal: React.FC = () => {
    */
   const createTodayPage = useCallback(async() => {
     const joinedPath = [todaysParentPath, todayInput].join('/');
-    return createAndTransit(
+    return create(
       {
         path: joinedPath, parentPath: todaysParentPath, wip: true, origin: Origin.View,
       },
-      { shouldCheckPageExists: true, onTerminated: closeCreateModal },
+      { onTerminated: closeCreateModal },
     );
-  }, [closeCreateModal, createAndTransit, todayInput, todaysParentPath]);
+  }, [closeCreateModal, create, todayInput, todaysParentPath]);
 
   /**
    * access input page
    */
   const createInputPage = useCallback(async() => {
-    return createAndTransit(
+    return create(
       {
         path: pageNameInput,
         parentPath: pathname,
         wip: true,
         origin: Origin.View,
       },
-      { shouldCheckPageExists: true, onTerminated: closeCreateModal },
+      { onTerminated: closeCreateModal },
     );
-  }, [closeCreateModal, createAndTransit, pageNameInput, pathname]);
+  }, [closeCreateModal, create, pageNameInput, pathname]);
 
   /**
    * access template page

+ 4 - 4
apps/app/src/components/Sidebar/Custom/CustomSidebarNotFound.tsx

@@ -3,16 +3,16 @@ import { useCallback } from 'react';
 import { Origin } from '@growi/core';
 import { useTranslation } from 'react-i18next';
 
-import { useCreatePageAndTransit } from '~/client/services/create-page';
+import { useCreatePage } from '~/client/services/create-page';
 
 export const SidebarNotFound = (): JSX.Element => {
   const { t } = useTranslation();
 
-  const { createAndTransit } = useCreatePageAndTransit();
+  const { create } = useCreatePage();
 
   const clickCreateButtonHandler = useCallback(async() => {
-    createAndTransit({ path: '/Sidebar', wip: false, origin: Origin.View });
-  }, [createAndTransit]);
+    create({ path: '/Sidebar', wip: false, origin: Origin.View });
+  }, [create]);
 
   return (
     <div>

+ 4 - 4
apps/app/src/components/Sidebar/PageCreateButton/hooks/use-create-new-page.ts

@@ -2,7 +2,7 @@ import { useCallback } from 'react';
 
 import { Origin } from '@growi/core';
 
-import { useCreatePageAndTransit } from '~/client/services/create-page';
+import { useCreatePage } from '~/client/services/create-page';
 import { useCurrentPagePath } from '~/stores/page';
 
 
@@ -14,12 +14,12 @@ type UseCreateNewPage = () => {
 export const useCreateNewPage: UseCreateNewPage = () => {
   const { data: currentPagePath, isLoading: isLoadingPagePath } = useCurrentPagePath();
 
-  const { isCreating, createAndTransit } = useCreatePageAndTransit();
+  const { isCreating, create } = useCreatePage();
 
   const createNewPage = useCallback(async() => {
     if (isLoadingPagePath) return;
 
-    return createAndTransit(
+    return create(
       {
         parentPath: currentPagePath,
         optionalParentPath: '/',
@@ -27,7 +27,7 @@ export const useCreateNewPage: UseCreateNewPage = () => {
         origin: Origin.View,
       },
     );
-  }, [createAndTransit, currentPagePath, isLoadingPagePath]);
+  }, [create, currentPagePath, isLoadingPagePath]);
 
   return {
     isCreating,

+ 4 - 5
apps/app/src/components/Sidebar/PageCreateButton/hooks/use-create-todays-memo.tsx

@@ -5,7 +5,7 @@ import { userHomepagePath } from '@growi/core/dist/utils/page-path-utils';
 import { format } from 'date-fns/format';
 import { useTranslation } from 'react-i18next';
 
-import { useCreatePageAndTransit } from '~/client/services/create-page';
+import { useCreatePage } from '~/client/services/create-page';
 import { useCurrentUser } from '~/stores/context';
 
 
@@ -19,7 +19,7 @@ export const useCreateTodaysMemo: UseCreateTodaysMemo = () => {
   const { t } = useTranslation('commons');
 
   const { data: currentUser } = useCurrentUser();
-  const { isCreating, createAndTransit } = useCreatePageAndTransit();
+  const { isCreating, create } = useCreatePage();
 
   const isCreatable = currentUser != null;
 
@@ -33,13 +33,12 @@ export const useCreateTodaysMemo: UseCreateTodaysMemo = () => {
   const createTodaysMemo = useCallback(async() => {
     if (!isCreatable || todaysPath == null) return;
 
-    return createAndTransit(
+    return create(
       {
         path: todaysPath, parentPath, wip: true, origin: Origin.View,
       },
-      { shouldCheckPageExists: true },
     );
-  }, [createAndTransit, isCreatable, todaysPath, parentPath]);
+  }, [create, isCreatable, todaysPath, parentPath]);
 
   return {
     isCreating,

+ 5 - 6
apps/app/src/components/TreeItem/NewPageInput/use-new-page-input.tsx

@@ -11,7 +11,7 @@ import { useRect } from '@growi/ui/dist/utils';
 import { useTranslation } from 'next-i18next';
 import { debounce } from 'throttle-debounce';
 
-import { useCreatePageAndTransit } from '~/client/services/create-page';
+import { useCreatePage } from '~/client/services/create-page';
 import { toastWarning, toastError, toastSuccess } from '~/client/util/toastr';
 import type { InputValidationResult } from '~/client/util/use-input-validator';
 import { ValidationTarget, useInputValidator } from '~/client/util/use-input-validator';
@@ -60,7 +60,7 @@ export const useNewPageInput = (): UseNewPageInput => {
   const Input: FC<TreeItemToolProps> = (props) => {
 
     const { t } = useTranslation();
-    const { createAndTransit } = useCreatePageAndTransit();
+    const { create: createPage } = useCreatePage();
 
     const { itemNode, stateHandlers, isEnableActions } = props;
     const { page, children } = itemNode;
@@ -108,7 +108,7 @@ export const useNewPageInput = (): UseNewPageInput => {
       setShowInput(false);
 
       try {
-        await createAndTransit(
+        await createPage(
           {
             path: newPagePath,
             parentPath,
@@ -120,8 +120,7 @@ export const useNewPageInput = (): UseNewPageInput => {
             wip: shouldCreateWipPage(newPagePath),
           },
           {
-            shouldCheckPageExists: true,
-            shouldTransit: false,
+            skipTransition: true,
             onCreated: () => {
               mutatePageTree();
 
@@ -140,7 +139,7 @@ export const useNewPageInput = (): UseNewPageInput => {
       finally {
         setProcessingSubmission(false);
       }
-    }, [cancel, hasDescendants, page.path, stateHandlers, t, createAndTransit]);
+    }, [cancel, hasDescendants, page.path, stateHandlers, t, createPage]);
 
     const inputContainerClass = newPageInputStyles['new-page-input-container'] ?? '';
     const isInvalid = validationResult != null;