kaori 4 лет назад
Родитель
Сommit
ce054ccd84

+ 10 - 13
packages/app/src/components/Common/Dropdown/PageItemControl.tsx

@@ -23,7 +23,7 @@ type CommonProps = {
   isEnableActions?: boolean,
   isEnableActions?: boolean,
   hideBookmarkMenuItem?: boolean,
   hideBookmarkMenuItem?: boolean,
   onClickBookmarkMenuItem?: (pageId: string, newValue?: boolean) => Promise<void>,
   onClickBookmarkMenuItem?: (pageId: string, newValue?: boolean) => Promise<void>,
-  onClickDuplicateMenuItem?: (pageId: string, path: string) => void,
+  onClickDuplicateMenuItem?: (pageId: string) => void,
   onClickRenameMenuItem?: (pageId: string) => void,
   onClickRenameMenuItem?: (pageId: string) => void,
   onClickDeleteMenuItem?: (pageId: string) => void,
   onClickDeleteMenuItem?: (pageId: string) => void,
 
 
@@ -33,14 +33,13 @@ type CommonProps = {
 
 
 type DropdownMenuProps = CommonProps & {
 type DropdownMenuProps = CommonProps & {
   pageId: string,
   pageId: string,
-  path: string,
 }
 }
 
 
 const PageItemControlDropdownMenu = React.memo((props: DropdownMenuProps): JSX.Element => {
 const PageItemControlDropdownMenu = React.memo((props: DropdownMenuProps): JSX.Element => {
   const { t } = useTranslation('');
   const { t } = useTranslation('');
 
 
   const {
   const {
-    pageId, path, pageInfo, isEnableActions, hideBookmarkMenuItem,
+    pageId, pageInfo, isEnableActions, hideBookmarkMenuItem,
     onClickBookmarkMenuItem, onClickDuplicateMenuItem, onClickRenameMenuItem, onClickDeleteMenuItem,
     onClickBookmarkMenuItem, onClickDuplicateMenuItem, onClickRenameMenuItem, onClickDeleteMenuItem,
     additionalMenuItemRenderer: AdditionalMenuItems,
     additionalMenuItemRenderer: AdditionalMenuItems,
   } = props;
   } = props;
@@ -59,8 +58,8 @@ const PageItemControlDropdownMenu = React.memo((props: DropdownMenuProps): JSX.E
     if (onClickDuplicateMenuItem == null) {
     if (onClickDuplicateMenuItem == null) {
       return;
       return;
     }
     }
-    await onClickDuplicateMenuItem(pageId, path);
-  }, [pageId]);
+    await onClickDuplicateMenuItem(pageId);
+  }, [onClickDuplicateMenuItem, pageId]);
 
 
   // eslint-disable-next-line react-hooks/rules-of-hooks
   // eslint-disable-next-line react-hooks/rules-of-hooks
   const renameItemClickedHandler = useCallback(async() => {
   const renameItemClickedHandler = useCallback(async() => {
@@ -145,7 +144,6 @@ const PageItemControlDropdownMenu = React.memo((props: DropdownMenuProps): JSX.E
 
 
 type PageItemControlSubstanceProps = CommonProps & {
 type PageItemControlSubstanceProps = CommonProps & {
   pageId: string,
   pageId: string,
-  path: string,
   fetchOnOpen?: boolean,
   fetchOnOpen?: boolean,
 }
 }
 
 
@@ -172,9 +170,9 @@ export const PageItemControlSubstance = (props: PageItemControlSubstanceProps):
     }
     }
   }, [mutatePageInfo, onClickBookmarkMenuItem, shouldFetch]);
   }, [mutatePageInfo, onClickBookmarkMenuItem, shouldFetch]);
 
 
-  const duplicateMenuItemClickHandler = useCallback(async(_pageId: string, _path: string) => {
+  const duplicateMenuItemClickHandler = useCallback(async(_pageId: string) => {
     if (onClickDuplicateMenuItem != null) {
     if (onClickDuplicateMenuItem != null) {
-      await onClickDuplicateMenuItem(_pageId, _path);
+      await onClickDuplicateMenuItem(_pageId);
     }
     }
 
 
     if (shouldFetch) {
     if (shouldFetch) {
@@ -212,21 +210,20 @@ export const PageItemControl = (props: PageItemControlProps): JSX.Element => {
     return <></>;
     return <></>;
   }
   }
 
 
-  return <PageItemControlSubstance pageId={pageId} path={path} {...props} />;
+  return <PageItemControlSubstance pageId={pageId} {...props} />;
 };
 };
 
 
 
 
 type AsyncPageItemControlProps = CommonProps & {
 type AsyncPageItemControlProps = CommonProps & {
   pageId?: string,
   pageId?: string,
-  path?: string,
 }
 }
 
 
 export const AsyncPageItemControl = (props: AsyncPageItemControlProps): JSX.Element => {
 export const AsyncPageItemControl = (props: AsyncPageItemControlProps): JSX.Element => {
-  const { pageId, path } = props;
+  const { pageId } = props;
 
 
-  if (pageId == null || path == null) {
+  if (pageId == null) {
     return <></>;
     return <></>;
   }
   }
 
 
-  return <PageItemControlSubstance pageId={pageId} path={path} fetchOnOpen {...props} />;
+  return <PageItemControlSubstance pageId={pageId} fetchOnOpen {...props} />;
 };
 };

+ 0 - 1
packages/app/src/components/PageList/PageListItemL.tsx

@@ -121,7 +121,6 @@ export const PageListItemL: FC<Props> = memo((props:Props) => {
                 {/* TODO: use PageItemControl with prefetched IPageInfo object */}
                 {/* TODO: use PageItemControl with prefetched IPageInfo object */}
                 <AsyncPageItemControl
                 <AsyncPageItemControl
                   pageId={pageData._id}
                   pageId={pageData._id}
-                  path={pageData.path}
                   onClickDeleteMenuItem={props.onClickDeleteButton}
                   onClickDeleteMenuItem={props.onClickDeleteButton}
                   isEnableActions={isEnableActions}
                   isEnableActions={isEnableActions}
                 />
                 />

+ 10 - 4
packages/app/src/components/Sidebar/PageTree/Item.tsx

@@ -123,12 +123,19 @@ const Item: FC<ItemProps> = (props: ItemProps) => {
     setNewPageInputShown(true);
     setNewPageInputShown(true);
   }, []);
   }, []);
 
 
-  const duplicateMenuItemClickHandler = async(_pageId: string, _path: string): Promise<void> => {
+  const duplicateMenuItemClickHandler = useCallback((): void => {
     if (onClickDuplicateMenuItem == null) {
     if (onClickDuplicateMenuItem == null) {
       return;
       return;
     }
     }
-    await onClickDuplicateMenuItem(_pageId, _path);
-  };
+
+    const { _id: pageId, path } = page;
+
+    if (pageId == null || path == null) {
+      throw Error('Any of _id and path must not be null.');
+    }
+
+    onClickDuplicateMenuItem(pageId, path);
+  }, [onClickDuplicateMenuItem, page]);
 
 
   const onClickDeleteButton = useCallback(async(_pageId: string): Promise<void> => {
   const onClickDeleteButton = useCallback(async(_pageId: string): Promise<void> => {
     if (onClickDeleteByPage == null) {
     if (onClickDeleteByPage == null) {
@@ -269,7 +276,6 @@ const Item: FC<ItemProps> = (props: ItemProps) => {
         <div className="grw-pagetree-control d-none">
         <div className="grw-pagetree-control d-none">
           <AsyncPageItemControl
           <AsyncPageItemControl
             pageId={page._id}
             pageId={page._id}
-            path={page.path}
             isEnableActions={isEnableActions}
             isEnableActions={isEnableActions}
             onClickBookmarkMenuItem={bookmarkMenuItemClickHandler}
             onClickBookmarkMenuItem={bookmarkMenuItemClickHandler}
             onClickDuplicateMenuItem={duplicateMenuItemClickHandler}
             onClickDuplicateMenuItem={duplicateMenuItemClickHandler}