From e3f922bface153955970675b875c4a71b5ff4906 Mon Sep 17 00:00:00 2001 From: DarkSky <25152247+darkskygit@users.noreply.github.com> Date: Tue, 17 Dec 2024 18:15:43 +0800 Subject: [PATCH] fix(server): send declined email (#9188) --- packages/backend/server/src/base/event/def.ts | 5 ++++- .../backend/server/src/core/permission/service.ts | 3 ++- .../src/core/workspaces/resolvers/service.ts | 14 ++++++-------- .../server/src/core/workspaces/resolvers/team.ts | 10 ++++++++-- packages/backend/server/tests/team.e2e.ts | 2 +- 5 files changed, 21 insertions(+), 13 deletions(-) diff --git a/packages/backend/server/src/base/event/def.ts b/packages/backend/server/src/base/event/def.ts index d6768d14df..910443480e 100644 --- a/packages/backend/server/src/base/event/def.ts +++ b/packages/backend/server/src/base/event/def.ts @@ -5,7 +5,10 @@ import { Flatten, Payload } from './types'; export interface WorkspaceEvents { members: { reviewRequested: Payload<{ inviteId: string }>; - requestDeclined: Payload<{ inviteId: string }>; + requestDeclined: Payload<{ + userId: User['id']; + workspaceId: Workspace['id']; + }>; requestApproved: Payload<{ inviteId: string }>; updated: Payload<{ workspaceId: Workspace['id']; count: number }>; }; diff --git a/packages/backend/server/src/core/permission/service.ts b/packages/backend/server/src/core/permission/service.ts index 659ed2a116..2ff219545d 100644 --- a/packages/backend/server/src/core/permission/service.ts +++ b/packages/backend/server/src/core/permission/service.ts @@ -470,7 +470,8 @@ export class PermissionService { permission.status === 'NeedMoreSeatAndReview' ) { this.event.emit('workspace.members.requestDeclined', { - inviteId: permission.id, + userId: user, + workspaceId, }); } diff --git a/packages/backend/server/src/core/workspaces/resolvers/service.ts b/packages/backend/server/src/core/workspaces/resolvers/service.ts index b7e91fd78a..3743608be3 100644 --- a/packages/backend/server/src/core/workspaces/resolvers/service.ts +++ b/packages/backend/server/src/core/workspaces/resolvers/service.ts @@ -159,14 +159,12 @@ export class WorkspaceService { await this.mailer.sendReviewApproveEmail(target.email, target.workspace); } - async sendReviewDeclinedEmail(inviteId: string) { - const target = await this.getInviteeEmailTarget(inviteId); - - if (!target) { - return; - } - - await this.mailer.sendReviewDeclinedEmail(target.email, target.workspace); + async sendReviewDeclinedEmail( + email: string | undefined, + workspaceName: string + ) { + if (!email) return; + await this.mailer.sendReviewDeclinedEmail(email, { name: workspaceName }); } private async getInviteeEmailTarget(inviteId: string) { diff --git a/packages/backend/server/src/core/workspaces/resolvers/team.ts b/packages/backend/server/src/core/workspaces/resolvers/team.ts index 87897f8834..ab0f1d5069 100644 --- a/packages/backend/server/src/core/workspaces/resolvers/team.ts +++ b/packages/backend/server/src/core/workspaces/resolvers/team.ts @@ -334,10 +334,16 @@ export class TeamWorkspaceResolver { @OnEvent('workspace.members.requestDeclined') async onDeclineRequest({ - inviteId, + userId, + workspaceId, }: EventPayload<'workspace.members.requestDeclined'>) { + const user = await this.users.findUserById(userId); + const workspace = await this.workspaceService.getWorkspaceInfo(workspaceId); // send decline mail - await this.workspaceService.sendReviewDeclinedEmail(inviteId); + await this.workspaceService.sendReviewDeclinedEmail( + user?.email, + workspace.name + ); } @OnEvent('workspace.members.requestApproved') diff --git a/packages/backend/server/tests/team.e2e.ts b/packages/backend/server/tests/team.e2e.ts index 4be4b0c0a2..bd208c6824 100644 --- a/packages/backend/server/tests/team.e2e.ts +++ b/packages/backend/server/tests/team.e2e.ts @@ -674,7 +674,7 @@ test('should be able to emit events', async t => { event.emit.lastCall.args, [ 'workspace.members.requestDeclined', - { inviteId: memberInvite.inviteId }, + { userId: user.id, workspaceId: tws.id }, ], 'should emit review requested event' );