From 4f97ea8a5d7cda629e6d17345d74a017b18bfcf5 Mon Sep 17 00:00:00 2001 From: Alex Yang Date: Sat, 2 Sep 2023 00:57:04 -0500 Subject: [PATCH] test: cover share page e2e (#4126) --- .../src/modules/workspaces/permission.ts | 6 +- .../src/components/share-menu/share-menu.tsx | 11 +-- .../src/components/share-menu/share-page.tsx | 7 +- tests/affine-cloud/e2e/collaboration.spec.ts | 70 +++++++++++++++++++ .../0.7.0-canary.18/e2e/basic.spec.ts | 7 +- tests/affine-local/e2e/all-page.spec.ts | 6 +- .../e2e/blocksuite/editor.spec.ts | 10 +-- tests/affine-local/e2e/duplicate-page.spec.ts | 4 +- tests/affine-local/e2e/image-preview.spec.ts | 32 ++++----- .../e2e/local-first-avatar.spec.ts | 7 +- .../e2e/local-first-collections-items.spec.ts | 8 +-- .../e2e/local-first-delete-page.spec.ts | 14 ++-- .../e2e/local-first-export-page.spec.ts | 6 +- .../e2e/local-first-favorite-page.spec.ts | 6 +- .../e2e/local-first-favorites-items.spec.ts | 8 +-- .../e2e/local-first-new-page.spec.ts | 6 +- .../e2e/local-first-openpage-newtab.spec.ts | 4 +- .../e2e/local-first-restore-page.spec.ts | 4 +- .../e2e/local-first-show-delete-modal.spec.ts | 6 +- .../e2e/local-first-trash-page.spec.ts | 6 +- .../e2e/local-first-workspace-list.spec.ts | 8 +-- tests/affine-local/e2e/open-affine.spec.ts | 4 +- tests/affine-local/e2e/quick-search.spec.ts | 26 +++---- tests/affine-local/e2e/settings.spec.ts | 6 +- tests/kit/utils/filter.ts | 4 +- tests/kit/utils/page-logic.ts | 2 +- tests/kit/utils/workspace.ts | 7 +- 27 files changed, 186 insertions(+), 99 deletions(-) create mode 100644 tests/affine-cloud/e2e/collaboration.spec.ts diff --git a/apps/server/src/modules/workspaces/permission.ts b/apps/server/src/modules/workspaces/permission.ts index 2c2b82c06c..c35e65815a 100644 --- a/apps/server/src/modules/workspaces/permission.ts +++ b/apps/server/src/modules/workspaces/permission.ts @@ -48,7 +48,11 @@ export class PermissionService { return true; } else { // check if this is a public subpage - return subpages.map(page => `space:${page}`).includes(id); + + // why use `endsWith`? + // because there might have `${wsId}:space:${subpageId}`, + // but subpages only have `${subpageId}` + return subpages.some(subpage => id.endsWith(subpage)); } } } diff --git a/packages/component/src/components/share-menu/share-menu.tsx b/packages/component/src/components/share-menu/share-menu.tsx index 61dc87f328..c64c75b01f 100644 --- a/packages/component/src/components/share-menu/share-menu.tsx +++ b/packages/component/src/components/share-menu/share-menu.tsx @@ -9,6 +9,7 @@ import type { Page } from '@blocksuite/store'; import { Button } from '@toeverything/components/button'; import { Divider } from '@toeverything/components/divider'; import { useAtom } from 'jotai'; +import { useCallback } from 'react'; import { Menu } from '../../ui/menu/menu'; import * as styles from './index.css'; @@ -62,15 +63,15 @@ export const ShareMenu = (props: ShareMenuProps) => { trigger={['click']} width={410} disablePortal={true} - onClickAway={() => { + onClickAway={useCallback(() => { setOpen(false); - }} + }, [setOpen])} > ) : (