fix(server): send declined email (#9188)

This commit is contained in:
DarkSky
2024-12-17 18:15:43 +08:00
committed by GitHub
parent b0e64fe516
commit e3f922bfac
5 changed files with 21 additions and 13 deletions

View File

@@ -5,7 +5,10 @@ import { Flatten, Payload } from './types';
export interface WorkspaceEvents { export interface WorkspaceEvents {
members: { members: {
reviewRequested: Payload<{ inviteId: string }>; reviewRequested: Payload<{ inviteId: string }>;
requestDeclined: Payload<{ inviteId: string }>; requestDeclined: Payload<{
userId: User['id'];
workspaceId: Workspace['id'];
}>;
requestApproved: Payload<{ inviteId: string }>; requestApproved: Payload<{ inviteId: string }>;
updated: Payload<{ workspaceId: Workspace['id']; count: number }>; updated: Payload<{ workspaceId: Workspace['id']; count: number }>;
}; };

View File

@@ -470,7 +470,8 @@ export class PermissionService {
permission.status === 'NeedMoreSeatAndReview' permission.status === 'NeedMoreSeatAndReview'
) { ) {
this.event.emit('workspace.members.requestDeclined', { this.event.emit('workspace.members.requestDeclined', {
inviteId: permission.id, userId: user,
workspaceId,
}); });
} }

View File

@@ -159,14 +159,12 @@ export class WorkspaceService {
await this.mailer.sendReviewApproveEmail(target.email, target.workspace); await this.mailer.sendReviewApproveEmail(target.email, target.workspace);
} }
async sendReviewDeclinedEmail(inviteId: string) { async sendReviewDeclinedEmail(
const target = await this.getInviteeEmailTarget(inviteId); email: string | undefined,
workspaceName: string
if (!target) { ) {
return; if (!email) return;
} await this.mailer.sendReviewDeclinedEmail(email, { name: workspaceName });
await this.mailer.sendReviewDeclinedEmail(target.email, target.workspace);
} }
private async getInviteeEmailTarget(inviteId: string) { private async getInviteeEmailTarget(inviteId: string) {

View File

@@ -334,10 +334,16 @@ export class TeamWorkspaceResolver {
@OnEvent('workspace.members.requestDeclined') @OnEvent('workspace.members.requestDeclined')
async onDeclineRequest({ async onDeclineRequest({
inviteId, userId,
workspaceId,
}: EventPayload<'workspace.members.requestDeclined'>) { }: EventPayload<'workspace.members.requestDeclined'>) {
const user = await this.users.findUserById(userId);
const workspace = await this.workspaceService.getWorkspaceInfo(workspaceId);
// send decline mail // send decline mail
await this.workspaceService.sendReviewDeclinedEmail(inviteId); await this.workspaceService.sendReviewDeclinedEmail(
user?.email,
workspace.name
);
} }
@OnEvent('workspace.members.requestApproved') @OnEvent('workspace.members.requestApproved')

View File

@@ -674,7 +674,7 @@ test('should be able to emit events', async t => {
event.emit.lastCall.args, event.emit.lastCall.args,
[ [
'workspace.members.requestDeclined', 'workspace.members.requestDeclined',
{ inviteId: memberInvite.inviteId }, { userId: user.id, workspaceId: tws.id },
], ],
'should emit review requested event' 'should emit review requested event'
); );