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();