feat(server): delay subscription after invitation accepted or approved (#11992)

This commit is contained in:
liuyi
2025-04-30 14:27:47 +08:00
committed by GitHub
parent 9a721c65b5
commit 2e1bed061e
49 changed files with 1990 additions and 2694 deletions
@@ -206,7 +206,7 @@ export const CloudWorkspaceMembersPanel = ({
setIsMutating(false);
return;
}
const results = await membersService.inviteMembers(uniqueEmails, true);
const results = await membersService.inviteMembers(uniqueEmails);
const unSuccessInvites = results.reduce<string[]>((acc, result) => {
if (!result.sentSuccess) {
acc.push(result.email);
@@ -256,12 +256,14 @@ const MemberItem = ({
const getMemberStatus = (member: Member): I18nString => {
switch (member.status) {
case WorkspaceMemberStatus.NeedMoreSeat:
case WorkspaceMemberStatus.NeedMoreSeatAndReview:
return 'insufficient-team-seat';
case WorkspaceMemberStatus.Pending:
return 'Pending';
case WorkspaceMemberStatus.NeedMoreSeatAndReview:
case WorkspaceMemberStatus.UnderReview:
return 'Under-Review';
case WorkspaceMemberStatus.AllocatingSeat:
return 'Allocating Seat';
case WorkspaceMemberStatus.Accepted:
switch (member.permission) {
case Permission.Owner:
@@ -63,8 +63,7 @@ export class InvitationService extends Service {
}
return await this.acceptInviteStore.acceptInvite(
this.inviteInfo$.value.workspace.id,
inviteId,
true
inviteId
);
}
@@ -11,7 +11,6 @@ export class AcceptInviteStore extends Store {
async acceptInvite(
workspaceId: string,
inviteId: string,
sendAcceptMail?: boolean,
signal?: AbortSignal
) {
const data = await this.gqlService.gql({
@@ -20,7 +19,6 @@ export class AcceptInviteStore extends Store {
variables: {
workspaceId,
inviteId,
sendAcceptMail,
},
context: { signal },
});
@@ -18,19 +18,10 @@ export class WorkspaceMembersService extends Service {
members = this.framework.createEntity(WorkspaceMembers);
async inviteMember(email: string, sendInviteMail?: boolean) {
return await this.store.inviteMember(
this.workspaceService.workspace.id,
email,
sendInviteMail
);
}
async inviteMembers(emails: string[], sendInviteMail?: boolean) {
async inviteMembers(emails: string[]) {
return await this.store.inviteBatch(
this.workspaceService.workspace.id,
emails,
sendInviteMail
emails
);
}
@@ -3,7 +3,6 @@ import {
createInviteLinkMutation,
getMembersByWorkspaceIdQuery,
grantWorkspaceTeamMemberMutation,
inviteByEmailMutation,
inviteByEmailsMutation,
type Permission,
revokeInviteLinkMutation,
@@ -43,30 +42,7 @@ export class WorkspaceMembersStore extends Store {
return data.workspace;
}
async inviteMember(
workspaceId: string,
email: string,
sendInviteMail = false
) {
if (!this.workspaceServerService.server) {
throw new Error('No Server');
}
const invite = await this.workspaceServerService.server.gql({
query: inviteByEmailMutation,
variables: {
workspaceId,
email,
sendInviteMail,
},
});
return invite.invite;
}
async inviteBatch(
workspaceId: string,
emails: string[],
sendInviteMail = false
) {
async inviteBatch(workspaceId: string, emails: string[]) {
if (!this.workspaceServerService.server) {
throw new Error('No Server');
}
@@ -75,10 +51,9 @@ export class WorkspaceMembersStore extends Store {
variables: {
workspaceId,
emails,
sendInviteMail,
},
});
return inviteBatch.inviteBatch;
return inviteBatch.inviteMembers;
}
async generateInviteLink(
@@ -128,7 +103,7 @@ export class WorkspaceMembersStore extends Store {
},
context: { signal },
});
return revoke.revoke;
return revoke.revokeMember;
}
async approveMember(workspaceId: string, userId: string) {