From a3c11182512353ee3b13c0a4969eff7628c38a67 Mon Sep 17 00:00:00 2001 From: Jimmfly Date: Wed, 18 Dec 2024 13:07:23 +0800 Subject: [PATCH] fix(core): member options in member list do not match expectations --- .../members/member-list.tsx | 35 ++++++++++++++++++- .../modules/cloud/entities/subscription.ts | 5 --- packages/frontend/i18n/src/resources/en.json | 2 +- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/packages/frontend/core/src/desktop/dialogs/setting/workspace-setting/new-workspace-setting-detail/members/member-list.tsx b/packages/frontend/core/src/desktop/dialogs/setting/workspace-setting/new-workspace-setting-detail/members/member-list.tsx index f9871cbead368..b07aa9eee60d2 100644 --- a/packages/frontend/core/src/desktop/dialogs/setting/workspace-setting/new-workspace-setting-detail/members/member-list.tsx +++ b/packages/frontend/core/src/desktop/dialogs/setting/workspace-setting/new-workspace-setting-detail/members/member-list.tsx @@ -102,6 +102,30 @@ export const MemberList = ({ ); }; +const getShouldShow = ({ + member, + currentAccountId, + isOwner, + isAdmin, +}: { + member: Member; + currentAccountId: string; + isOwner: boolean; + isAdmin: boolean; +}) => { + if ( + member.id === currentAccountId || + member.permission === Permission.Owner + ) { + return false; + } else if (isOwner) { + return true; + } else if (isAdmin) { + return member.permission !== Permission.Admin; + } + return false; +}; + const MemberItem = ({ member, isOwner, @@ -122,7 +146,16 @@ const MemberItem = ({ const permission = useService(WorkspacePermissionService).permission; const isEquals = workspaceName === inputValue; - const show = isOwner && currentAccount.id !== member.id; + const show = useMemo( + () => + getShouldShow({ + member, + currentAccountId: currentAccount.id, + isOwner, + isAdmin, + }), + [member, currentAccount, isOwner, isAdmin] + ); const handleOpenAssignModal = useCallback(() => { setInputValue(''); diff --git a/packages/frontend/core/src/modules/cloud/entities/subscription.ts b/packages/frontend/core/src/modules/cloud/entities/subscription.ts index 6c77aabb286e1..f2cbf19a19151 100644 --- a/packages/frontend/core/src/modules/cloud/entities/subscription.ts +++ b/packages/frontend/core/src/modules/cloud/entities/subscription.ts @@ -42,11 +42,6 @@ export class Subscription extends Entity { ? subscriptions.find(sub => sub.plan === SubscriptionPlan.AI) : null ); - team$ = this.subscription$.map(subscriptions => - subscriptions - ? subscriptions.find(sub => sub.plan === SubscriptionPlan.Team) - : null - ); isBeliever$ = this.pro$.map( sub => sub?.recurring === SubscriptionRecurring.Lifetime ); diff --git a/packages/frontend/i18n/src/resources/en.json b/packages/frontend/i18n/src/resources/en.json index f471312ca8a24..d80f585bc4fc8 100644 --- a/packages/frontend/i18n/src/resources/en.json +++ b/packages/frontend/i18n/src/resources/en.json @@ -896,7 +896,7 @@ "com.affine.payment.cloud.team-workspace.benefit.g1-3": "500 MB of maximum file size.", "com.affine.payment.cloud.team-workspace.benefit.g1-4": "Unlimited team members (10+ seats).", "com.affine.payment.cloud.team-workspace.benefit.g1-5": "Multiple admin roles.", - "com.affine.payment.cloud.team-workspace.benefit.g1-6": "Priority customer support", + "com.affine.payment.cloud.team-workspace.benefit.g1-6": "Priority customer support.", "com.affine.payment.cloud.team-workspace.description": "Best for scalable teams.", "com.affine.payment.cloud.team-workspace.name": "Team Workspace", "com.affine.payment.cloud.team-workspace.title.billed-yearly": "annually",