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

add isIPageInfoForEntityForDeleteModal method

Futa Arai 2 лет назад
Родитель
Сommit
728864ca38
2 измененных файлов с 8 добавлено и 19 удалено
  1. 2 2
      apps/app/src/components/PageDeleteModal.tsx
  2. 6 17
      packages/core/src/interfaces/page.ts

+ 2 - 2
apps/app/src/components/PageDeleteModal.tsx

@@ -2,7 +2,7 @@ import React, {
   useState, FC, useMemo, useEffect,
   useState, FC, useMemo, useEffect,
 } from 'react';
 } from 'react';
 
 
-import { isIPageInfoForEntity } from '@growi/core';
+import { isIPageInfoForEntityForDeleteModal } from '@growi/core';
 import type {
 import type {
   HasObjectId,
   HasObjectId,
   IPageInfoForEntity, IPageToDeleteWithMeta, IDataWithMeta,
   IPageInfoForEntity, IPageToDeleteWithMeta, IDataWithMeta,
@@ -50,7 +50,7 @@ const PageDeleteModal: FC = () => {
   const isOpened = deleteModalData?.isOpened ?? false;
   const isOpened = deleteModalData?.isOpened ?? false;
 
 
   const notOperatablePages: IPageToDeleteWithMeta[] = (deleteModalData?.pages ?? [])
   const notOperatablePages: IPageToDeleteWithMeta[] = (deleteModalData?.pages ?? [])
-    .filter(p => !isIPageInfoForEntity(p.meta));
+    .filter(p => !isIPageInfoForEntityForDeleteModal(p.meta));
   const notOperatablePageIds = notOperatablePages.map(p => p.data._id);
   const notOperatablePageIds = notOperatablePages.map(p => p.data._id);
 
 
   const { injectTo } = useSWRxPageInfoForList(notOperatablePageIds);
   const { injectTo } = useSWRxPageInfoForList(notOperatablePageIds);

+ 6 - 17
packages/core/src/interfaces/page.ts

@@ -111,23 +111,12 @@ export type IPageInfoAll = IPageInfo | IPageInfoForEntity | IPageInfoForOperatio
 
 
 // eslint-disable-next-line @typescript-eslint/no-explicit-any
 // eslint-disable-next-line @typescript-eslint/no-explicit-any
 export const isIPageInfoForEntity = (pageInfo: any | undefined): pageInfo is IPageInfoForEntity => {
 export const isIPageInfoForEntity = (pageInfo: any | undefined): pageInfo is IPageInfoForEntity => {
-  const requiredProperties: (keyof IPageInfoForEntity)[] = [
-    'isV5Compatible',
-    'isEmpty',
-    'isDeletable',
-    'isAbleToDeleteCompletely',
-    'isRevertible',
-    'bookmarkCount',
-    'sumOfLikers',
-    'likerIds',
-    'sumOfSeenUsers',
-    'seenUserIds',
-    'contentAge',
-    'descendantCount',
-    'commentCount',
-  ];
-
-  return pageInfo != null && requiredProperties.every(prop => prop in pageInfo);
+  return pageInfo != null;
+};
+
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+export const isIPageInfoForEntityForDeleteModal = (pageInfo: any | undefined): pageInfo is IPageInfoForEntity => {
+  return pageInfo != null && 'isDeletable' in pageInfo && 'isAbleToDeleteCompletely' in pageInfo;
 };
 };
 
 
 // eslint-disable-next-line @typescript-eslint/no-explicit-any
 // eslint-disable-next-line @typescript-eslint/no-explicit-any