Просмотр исходного кода

refactor usePagePathRenameHandler

Yuki Takei 1 год назад
Родитель
Сommit
af9ee944d8

+ 11 - 8
apps/app/src/components/PageEditor/page-path-rename-utils.ts

@@ -7,6 +7,7 @@ import { apiv3Put } from '~/client/util/apiv3-client';
 import { toastSuccess, toastError } from '~/client/util/toastr';
 import { toastSuccess, toastError } from '~/client/util/toastr';
 import { useSWRMUTxCurrentPage } from '~/stores/page';
 import { useSWRMUTxCurrentPage } from '~/stores/page';
 import { mutatePageTree, mutatePageList } from '~/stores/page-listing';
 import { mutatePageTree, mutatePageList } from '~/stores/page-listing';
+import { useIsUntitledPage } from '~/stores/ui';
 
 
 
 
 type PagePathRenameHandler = (newPagePath: string, onRenameFinish?: () => void, onRenameFailure?: () => void, onRenamedSkipped?: () => void) => Promise<void>
 type PagePathRenameHandler = (newPagePath: string, onRenameFinish?: () => void, onRenameFailure?: () => void, onRenamedSkipped?: () => void) => Promise<void>
@@ -15,29 +16,31 @@ export const usePagePathRenameHandler = (
     currentPage?: IPagePopulatedToShowRevision | null,
     currentPage?: IPagePopulatedToShowRevision | null,
 ): PagePathRenameHandler => {
 ): PagePathRenameHandler => {
 
 
-  const { trigger: mutateCurrentPage } = useSWRMUTxCurrentPage();
   const { t } = useTranslation();
   const { t } = useTranslation();
+  const { trigger: mutateCurrentPage } = useSWRMUTxCurrentPage();
+  const { mutate: mutateIsUntitledPage } = useIsUntitledPage();
 
 
-  const pagePathRenameHandler = useCallback(async(newPagePath, onRenameFinish, onRenameFailure, onRenameSkipped) => {
+  const pagePathRenameHandler = useCallback(async(newPagePath, onRenameFinish, onRenameFailure) => {
 
 
     if (currentPage == null) {
     if (currentPage == null) {
       return;
       return;
     }
     }
 
 
+    if (newPagePath === currentPage.path || newPagePath === '') {
+      onRenameFinish?.();
+      return;
+    }
+
     const onRenamed = (fromPath: string | undefined, toPath: string) => {
     const onRenamed = (fromPath: string | undefined, toPath: string) => {
       mutatePageTree();
       mutatePageTree();
       mutatePageList();
       mutatePageList();
+      mutateIsUntitledPage(false);
 
 
       if (currentPage.path === fromPath || currentPage.path === toPath) {
       if (currentPage.path === fromPath || currentPage.path === toPath) {
         mutateCurrentPage();
         mutateCurrentPage();
       }
       }
     };
     };
 
 
-    if (newPagePath === currentPage.path || newPagePath === '') {
-      onRenameSkipped?.();
-      return;
-    }
-
     try {
     try {
       await apiv3Put('/pages/rename', {
       await apiv3Put('/pages/rename', {
         pageId: currentPage._id,
         pageId: currentPage._id,
@@ -54,7 +57,7 @@ export const usePagePathRenameHandler = (
       onRenameFailure?.();
       onRenameFailure?.();
       toastError(err);
       toastError(err);
     }
     }
-  }, [currentPage, mutateCurrentPage, t]);
+  }, [currentPage, mutateCurrentPage, mutateIsUntitledPage, t]);
 
 
   return pagePathRenameHandler;
   return pagePathRenameHandler;
 };
 };

+ 0 - 5
apps/app/src/components/PageHeader/PagePathHeader.tsx

@@ -72,11 +72,6 @@ export const PagePathHeader = memo((props: Props): JSX.Element => {
       },
       },
       () => {
       () => {
         setRenameInputShown(true);
         setRenameInputShown(true);
-      },
-      () => {
-        setRenameInputShown(false);
-        setValidationResult(undefined);
-        onRenameTerminated?.();
       });
       });
   }, [dPagePath.latter, pagePathRenameHandler, onRenameTerminated]);
   }, [dPagePath.latter, pagePathRenameHandler, onRenameTerminated]);
 
 

+ 2 - 8
apps/app/src/components/PageHeader/PageTitleHeader.tsx

@@ -50,7 +50,7 @@ export const PageTitleHeader = (props: Props): JSX.Element => {
   const editedPageTitle = nodePath.basename(editedPagePath);
   const editedPageTitle = nodePath.basename(editedPagePath);
 
 
   const { data: editorMode } = useEditorMode();
   const { data: editorMode } = useEditorMode();
-  const { data: isUntitledPage, mutate: mutateIsUntitledPage } = useIsUntitledPage();
+  const { data: isUntitledPage } = useIsUntitledPage();
 
 
   const changeHandler = useCallback(async(e: ChangeEvent<HTMLInputElement>) => {
   const changeHandler = useCallback(async(e: ChangeEvent<HTMLInputElement>) => {
     const newPageTitle = pathUtils.removeHeadingSlash(e.target.value);
     const newPageTitle = pathUtils.removeHeadingSlash(e.target.value);
@@ -70,17 +70,11 @@ export const PageTitleHeader = (props: Props): JSX.Element => {
         setRenameInputShown(false);
         setRenameInputShown(false);
         setValidationResult(undefined);
         setValidationResult(undefined);
         onMoveTerminated?.();
         onMoveTerminated?.();
-        mutateIsUntitledPage(false);
       },
       },
       () => {
       () => {
         setRenameInputShown(true);
         setRenameInputShown(true);
-      },
-      () => {
-        setRenameInputShown(false);
-        setValidationResult(undefined);
-        onMoveTerminated?.();
       });
       });
-  }, [editedPagePath, mutateIsUntitledPage, onMoveTerminated, pagePathRenameHandler]);
+  }, [editedPagePath, onMoveTerminated, pagePathRenameHandler]);
 
 
   const cancel = useCallback(() => {
   const cancel = useCallback(() => {
     setEditedPagePath(currentPagePath);
     setEditedPagePath(currentPagePath);