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

fix page being able to delete completely when not allowed

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

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

@@ -57,7 +57,7 @@ const PageDeleteModal: FC = () => {
 
   // inject IPageInfo to operate
   let injectedPages: IDataWithMeta<HasObjectId & { path: string }, IPageInfoForEntity>[] | null = null;
-  if (deleteModalData?.pages != null && notOperatablePageIds.length > 0) {
+  if (deleteModalData?.pages != null) {
     injectedPages = injectTo(deleteModalData?.pages);
   }
 

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

@@ -111,7 +111,23 @@ export type IPageInfoAll = IPageInfo | IPageInfoForEntity | IPageInfoForOperatio
 
 // eslint-disable-next-line @typescript-eslint/no-explicit-any
 export const isIPageInfoForEntity = (pageInfo: any | undefined): pageInfo is IPageInfoForEntity => {
-  return pageInfo != null;
+  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);
 };
 
 // eslint-disable-next-line @typescript-eslint/no-explicit-any