mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 04:18:54 +00:00
feat(server): delay subscription after invitation accepted or approved (#11992)
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -373,6 +373,10 @@ export function useAFFiNEI18N(): {
|
||||
* `Need More Seats`
|
||||
*/
|
||||
["Need-More-Seats"](): string;
|
||||
/**
|
||||
* `Allocating Seat`
|
||||
*/
|
||||
["Allocating Seat"](): string;
|
||||
/**
|
||||
* `Admin`
|
||||
*/
|
||||
@@ -8078,6 +8082,20 @@ export function useAFFiNEI18N(): {
|
||||
* `Can not batch grant doc owner permissions.`
|
||||
*/
|
||||
["error.CAN_NOT_BATCH_GRANT_DOC_OWNER_PERMISSIONS"](): string;
|
||||
/**
|
||||
* `Can not set a non-active member as owner.`
|
||||
*/
|
||||
["error.NEW_OWNER_IS_NOT_ACTIVE_MEMBER"](): string;
|
||||
/**
|
||||
* `Invalid invitation provided.`
|
||||
*/
|
||||
["error.INVALID_INVITATION"](): string;
|
||||
/**
|
||||
* `No more seat available in the Space {{spaceId}}.`
|
||||
*/
|
||||
["error.NO_MORE_SEAT"](options: {
|
||||
readonly spaceId: string;
|
||||
}): string;
|
||||
/**
|
||||
* `Unsupported subscription plan: {{plan}}.`
|
||||
*/
|
||||
|
||||
@@ -83,6 +83,7 @@
|
||||
"Collaborator": "Collaborator",
|
||||
"Under-Review": "Under Review",
|
||||
"Need-More-Seats": "Need More Seats",
|
||||
"Allocating Seat": "Allocating Seat",
|
||||
"Admin": "Admin",
|
||||
"Publish": "Publish",
|
||||
"Published to Web": "Published to web",
|
||||
@@ -2005,6 +2006,9 @@
|
||||
"error.ACTION_FORBIDDEN_ON_NON_TEAM_WORKSPACE": "A Team workspace is required to perform this action.",
|
||||
"error.DOC_DEFAULT_ROLE_CAN_NOT_BE_OWNER": "Doc default role can not be owner.",
|
||||
"error.CAN_NOT_BATCH_GRANT_DOC_OWNER_PERMISSIONS": "Can not batch grant doc owner permissions.",
|
||||
"error.NEW_OWNER_IS_NOT_ACTIVE_MEMBER": "Can not set a non-active member as owner.",
|
||||
"error.INVALID_INVITATION": "Invalid invitation provided.",
|
||||
"error.NO_MORE_SEAT": "No more seat available in the Space {{spaceId}}.",
|
||||
"error.UNSUPPORTED_SUBSCRIPTION_PLAN": "Unsupported subscription plan: {{plan}}.",
|
||||
"error.FAILED_TO_CHECKOUT": "Failed to create checkout session.",
|
||||
"error.INVALID_CHECKOUT_PARAMETERS": "Invalid checkout parameters provided.",
|
||||
|
||||
Reference in New Issue
Block a user