mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-20 03:26:47 +08:00
feat(server): send review request when team member count over quota limit (#11126)
This commit is contained in:
@@ -610,38 +610,8 @@ export class WorkspaceResolver {
|
||||
`workspace:inviteLink:${workspaceId}`
|
||||
);
|
||||
if (invite?.inviteId === inviteId) {
|
||||
const seatAvailable = await this.quota.tryCheckSeat(workspaceId);
|
||||
if (seatAvailable) {
|
||||
const invite = await this.models.workspaceUser.set(
|
||||
workspaceId,
|
||||
user.id,
|
||||
WorkspaceRole.Collaborator,
|
||||
WorkspaceMemberStatus.UnderReview
|
||||
);
|
||||
await this.workspaceService.sendReviewRequestNotification(invite.id);
|
||||
return true;
|
||||
} else {
|
||||
const isTeam =
|
||||
await this.workspaceService.isTeamWorkspace(workspaceId);
|
||||
// only team workspace allow over limit
|
||||
if (isTeam) {
|
||||
await this.models.workspaceUser.set(
|
||||
workspaceId,
|
||||
user.id,
|
||||
WorkspaceRole.Collaborator,
|
||||
WorkspaceMemberStatus.NeedMoreSeatAndReview
|
||||
);
|
||||
const memberCount =
|
||||
await this.models.workspaceUser.count(workspaceId);
|
||||
this.event.emit('workspace.members.updated', {
|
||||
workspaceId,
|
||||
count: memberCount,
|
||||
});
|
||||
return true;
|
||||
} else {
|
||||
throw new MemberQuotaExceeded();
|
||||
}
|
||||
}
|
||||
await this.acceptInviteByLink(user, workspaceId);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -650,6 +620,40 @@ export class WorkspaceResolver {
|
||||
return true;
|
||||
}
|
||||
|
||||
private async acceptInviteByLink(user: CurrentUser, workspaceId: string) {
|
||||
const seatAvailable = await this.quota.tryCheckSeat(workspaceId);
|
||||
if (seatAvailable) {
|
||||
const role = await this.models.workspaceUser.set(
|
||||
workspaceId,
|
||||
user.id,
|
||||
WorkspaceRole.Collaborator,
|
||||
WorkspaceMemberStatus.UnderReview
|
||||
);
|
||||
await this.workspaceService.sendReviewRequestNotification(role.id);
|
||||
return;
|
||||
}
|
||||
|
||||
const isTeam = await this.workspaceService.isTeamWorkspace(workspaceId);
|
||||
// only team workspace allow over limit
|
||||
if (isTeam) {
|
||||
const role = await this.models.workspaceUser.set(
|
||||
workspaceId,
|
||||
user.id,
|
||||
WorkspaceRole.Collaborator,
|
||||
WorkspaceMemberStatus.NeedMoreSeatAndReview
|
||||
);
|
||||
await this.workspaceService.sendReviewRequestNotification(role.id);
|
||||
const memberCount = await this.models.workspaceUser.count(workspaceId);
|
||||
this.event.emit('workspace.members.updated', {
|
||||
workspaceId,
|
||||
count: memberCount,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
throw new MemberQuotaExceeded();
|
||||
}
|
||||
|
||||
@Mutation(() => Boolean)
|
||||
async leaveWorkspace(
|
||||
@CurrentUser() user: CurrentUser,
|
||||
|
||||
Reference in New Issue
Block a user