diff --git a/packages/frontend/core/src/modules/share-menu/view/share-menu/invite-member-editor/invite-member-editor.tsx b/packages/frontend/core/src/modules/share-menu/view/share-menu/invite-member-editor/invite-member-editor.tsx index 555869b578..bdaf3d2cd4 100644 --- a/packages/frontend/core/src/modules/share-menu/view/share-menu/invite-member-editor/invite-member-editor.tsx +++ b/packages/frontend/core/src/modules/share-menu/view/share-menu/invite-member-editor/invite-member-editor.tsx @@ -1,6 +1,5 @@ import { Button, - Checkbox, Loading, Menu, MenuItem, @@ -165,9 +164,11 @@ export const InviteMemberEditor = ({ } return [...prev, member]; }); + setSearchText(''); + memberSearchService.search(''); focusInput(); }, - [focusInput] + [focusInput, memberSearchService] ); const handleRoleChange = useCallback((role: DocRole) => { @@ -211,9 +212,11 @@ export const InviteMemberEditor = ({ onBlur={onBlur} autoFocus className={styles.searchInput} - placeholder={t[ - 'com.affine.share-menu.invite-editor.placeholder' - ]()} + placeholder={ + selectedMembers.length + ? '' + : t['com.affine.share-menu.invite-editor.placeholder']() + } /> {!selectedMembers.length ? null : ( @@ -225,17 +228,6 @@ export const InviteMemberEditor = ({ /> )} - {selectedMembers.length ? ( -
- - {t['com.affine.share-menu.invite-editor.sent-email']()} - {` (coming soon)`} -
- ) : null}
diff --git a/packages/frontend/core/src/modules/share-menu/view/share-menu/share-menu.tsx b/packages/frontend/core/src/modules/share-menu/view/share-menu/share-menu.tsx index 714de88480..5a5f639b50 100644 --- a/packages/frontend/core/src/modules/share-menu/view/share-menu/share-menu.tsx +++ b/packages/frontend/core/src/modules/share-menu/view/share-menu/share-menu.tsx @@ -1,12 +1,10 @@ import { Tabs, Tooltip, useConfirmModal } from '@affine/component'; import { Button } from '@affine/component/ui/button'; import { Menu } from '@affine/component/ui/menu'; -import { - ServerService, - WorkspaceSubscriptionService, -} from '@affine/core/modules/cloud'; +import { ServerService } from '@affine/core/modules/cloud'; import { WorkspaceDialogService } from '@affine/core/modules/dialogs'; import { WorkspacePermissionService } from '@affine/core/modules/permissions'; +import { WorkspaceQuotaService } from '@affine/core/modules/quota'; import { ShareInfoService } from '@affine/core/modules/share-doc'; import type { WorkspaceMetadata } from '@affine/core/modules/workspace'; import { ServerDeploymentType, SubscriptionPlan } from '@affine/graphql'; @@ -20,6 +18,7 @@ import { type Ref, useCallback, useEffect, + useMemo, useState, } from 'react'; @@ -55,14 +54,18 @@ export const ShareMenuContent = (props: ShareMenuProps) => { c => c.type === ServerDeploymentType.Selfhosted ) ); - - const workspaceSubscriptionService = useService(WorkspaceSubscriptionService); - const subscription = useLiveData( - workspaceSubscriptionService.subscription.subscription$ - ); - const hittingPaywall = - (!subscription && !isSelfhosted) || - (subscription && subscription.plan === SubscriptionPlan.Free); + const workspaceQuotaService = useService(WorkspaceQuotaService); + const quota = useLiveData(workspaceQuotaService.quota.quota$); + const hittingPaywall = useMemo(() => { + if (isSelfhosted) { + return false; + } + if (quota) { + const { name } = quota; + return name.toLowerCase() === SubscriptionPlan.Free.toLowerCase(); + } + return true; + }, [isSelfhosted, quota]); const permissionService = useService(WorkspacePermissionService); const isOwner = useLiveData(permissionService.permission.isOwner$); @@ -74,8 +77,8 @@ export const ShareMenuContent = (props: ShareMenuProps) => { }, []); useEffect(() => { - workspaceSubscriptionService.subscription.revalidate(); - }, [workspaceSubscriptionService]); + workspaceQuotaService.quota.revalidate(); + }, [workspaceQuotaService]); const { openConfirmModal } = useConfirmModal();