Taichi Masuyama 4 سال پیش
والد
کامیت
d66a801555

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

@@ -89,8 +89,8 @@ const Item: FC<ItemProps> = (props: ItemProps) => {
   const { data, mutate: mutateChildren } = useSWRxPageChildren(isOpen ? page._id : null);
 
   // descendantCount
-  const { data: ptDescCountMap } = usePageTreeDescCountMap();
-  const descendantCount = ptDescCountMap?.get(page._id || '') || page.descendantCount || 0;
+  const { getDescCount } = usePageTreeDescCountMap();
+  const descendantCount = getDescCount(page._id) || page.descendantCount || 0;
 
 
   // hasDescendants flag

+ 3 - 3
packages/app/src/interfaces/websocket.ts

@@ -3,10 +3,10 @@ export const SocketEventName = {
 } as const;
 export type SocketEventName = typeof SocketEventName[keyof typeof SocketEventName];
 
-type PagePath = string;
+type PageId = string;
 type DescendantCount = number;
 /**
  * Data of updateDescCount when used through socket.io. Convert to UpdateDescCountData type when use with swr cache.
  */
-export type UpdateDescCountRawData = Record<PagePath, DescendantCount>;
-export type UpdateDescCountData = Map<PagePath, DescendantCount>;
+export type UpdateDescCountRawData = Record<PageId, DescendantCount>;
+export type UpdateDescCountData = Map<PageId, DescendantCount>;

+ 1 - 1
packages/app/src/server/service/page.ts

@@ -2639,7 +2639,7 @@ class PageService {
 
     await Page.incrementDescendantCountOfPageIds(ancestorPageIds, inc);
 
-    const updateDescCountData: UpdateDescCountRawData = Object.fromEntries(ancestors.map(p => [p.path, p.descendantCount + inc]));
+    const updateDescCountData: UpdateDescCountRawData = Object.fromEntries(ancestors.map(p => [p._id.toString(), p.descendantCount + inc]));
     this.emitUpdateDescCount(updateDescCountData);
   }
 

+ 2 - 0
packages/app/src/stores/ui.tsx

@@ -337,6 +337,7 @@ export const useIsAbleToShowPageAuthors = (): SWRResponse<boolean, Error> => {
 
 type PageTreeDescCountMapUtils = {
   update(newData?: UpdateDescCountData): Promise<UpdateDescCountData | undefined>
+  getDescCount(pageId?: string): number | null | undefined
 }
 
 export const usePageTreeDescCountMap = (initialData?: UpdateDescCountData): SWRResponse<UpdateDescCountData, Error> & PageTreeDescCountMapUtils => {
@@ -346,6 +347,7 @@ export const usePageTreeDescCountMap = (initialData?: UpdateDescCountData): SWRR
 
   return {
     ...swrResponse,
+    getDescCount: (pageId?: string) => (pageId != null ? swrResponse.data?.get(pageId) : null),
     update: (newData: UpdateDescCountData) => swrResponse.mutate(new Map([...(swrResponse.data || new Map()), ...newData])),
   };
 };