Shun Miyazawa 3 лет назад
Родитель
Сommit
1fc195cede
1 измененных файлов с 11 добавлено и 30 удалено
  1. 11 30
      packages/app/src/components/PageRenameModal.tsx

+ 11 - 30
packages/app/src/components/PageRenameModal.tsx

@@ -50,7 +50,6 @@ const PageRenameModal = (): JSX.Element => {
 
 
   const [subordinatedPages, setSubordinatedPages] = useState([]);
   const [subordinatedPages, setSubordinatedPages] = useState([]);
   const [existingPaths, setExistingPaths] = useState<string[]>([]);
   const [existingPaths, setExistingPaths] = useState<string[]>([]);
-  const [canRename, setCanRename] = useState(false);
   const [isRenameRecursively, setIsRenameRecursively] = useState(true);
   const [isRenameRecursively, setIsRenameRecursively] = useState(true);
   const [isRenameRedirect, setIsRenameRedirect] = useState(false);
   const [isRenameRedirect, setIsRenameRedirect] = useState(false);
   const [isRemainMetadata, setIsRemainMetadata] = useState(false);
   const [isRemainMetadata, setIsRemainMetadata] = useState(false);
@@ -81,6 +80,16 @@ const PageRenameModal = (): JSX.Element => {
     }
     }
   }, [isOpened, page, updateSubordinatedList]);
   }, [isOpened, page, updateSubordinatedList]);
 
 
+  const canRename = useMemo(() => {
+    if (page == null || isMatchedWithUserHomePagePath || page.data.path === pageNameInput) {
+      return false;
+    }
+    if (isV5Compatible(page.meta)) {
+      return existingPaths.length === 0; // v5 data
+    }
+    return isRenameRecursively; // v4 data
+  }, [existingPaths.length, isMatchedWithUserHomePagePath, isRenameRecursively, page, pageNameInput]);
+
   const rename = useCallback(async() => {
   const rename = useCallback(async() => {
     if (page == null || !canRename) {
     if (page == null || !canRename) {
       return;
       return;
@@ -127,9 +136,6 @@ const PageRenameModal = (): JSX.Element => {
     try {
     try {
       const res = await apiv3Get<{ existPaths: string[]}>('/page/exist-paths', { fromPath, toPath });
       const res = await apiv3Get<{ existPaths: string[]}>('/page/exist-paths', { fromPath, toPath });
       const { existPaths } = res.data;
       const { existPaths } = res.data;
-      if (existPaths.length === 0) {
-        setCanRename(true);
-      }
       setExistingPaths(existPaths);
       setExistingPaths(existPaths);
     }
     }
     catch (err) {
     catch (err) {
@@ -157,13 +163,6 @@ const PageRenameModal = (): JSX.Element => {
     }
     }
   }, [isOpened, pageNameInput, subordinatedPages, checkExistPathsDebounce, page, checkIsUsersHomePageDebounce]);
   }, [isOpened, pageNameInput, subordinatedPages, checkExistPathsDebounce, page, checkIsUsersHomePageDebounce]);
 
 
-  useEffect(() => {
-    if (isOpened && page != null) {
-      setCanRename(false);
-    }
-  }, [isOpened, page, pageNameInput]);
-
-
   function ppacInputChangeHandler(value) {
   function ppacInputChangeHandler(value) {
     setErrs(null);
     setErrs(null);
     setPageNameInput(value);
     setPageNameInput(value);
@@ -330,24 +329,6 @@ const PageRenameModal = (): JSX.Element => {
       return <></>;
       return <></>;
     }
     }
 
 
-    let submitButtonDisabled = true;
-
-    if (isMatchedWithUserHomePagePath) {
-      submitButtonDisabled = true;
-    }
-    else if (page.data.path === pageNameInput) {
-      submitButtonDisabled = true;
-    }
-    else if (!canRename) {
-      submitButtonDisabled = true;
-    }
-    else if (isV5Compatible(page.meta)) {
-      submitButtonDisabled = existingPaths.length !== 0; // v5 data
-    }
-    else {
-      submitButtonDisabled = !isRenameRecursively; // v4 data
-    }
-
     return (
     return (
       <>
       <>
         <ApiErrorMessageList errs={errs} targetPath={pageNameInput} />
         <ApiErrorMessageList errs={errs} targetPath={pageNameInput} />
@@ -355,7 +336,7 @@ const PageRenameModal = (): JSX.Element => {
           type="button"
           type="button"
           className="btn btn-primary"
           className="btn btn-primary"
           onClick={rename}
           onClick={rename}
-          disabled={submitButtonDisabled}
+          disabled={!canRename}
         >Rename
         >Rename
         </button>
         </button>
       </>
       </>