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])} > ) : (