All files / lib/communication/handlers team-invitation.handler.ts

100% Statements 2/2
100% Branches 0/0
100% Functions 2/2
100% Lines 2/2

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35                        3x     3x                                      
import type { CommunicationGateway } from "../gateway";
 
export type TeamInvitationPayload = {
	recipientEmail: string;
	invitationLink: string;
	proName: string;
	inviterName: string;
	role: "owner" | "manager" | "staff";
	expiresInDays: number;
};
 
export class TeamInvitationHandler {
	constructor(private gateway: CommunicationGateway) {}
 
	async handle(payload: TeamInvitationPayload): Promise<void> {
		await this.gateway.send({
			channel: "email",
			recipient: payload.recipientEmail,
			eventType: "team_invitation",
			transactional: true,
			content: {
				template: "team-invitation",
				subject: `You've been invited to join ${payload.proName} on Interioring`,
				props: {
					invitationLink: payload.invitationLink,
					proName: payload.proName,
					inviterName: payload.inviterName,
					role: payload.role,
					expiresInDays: payload.expiresInDays,
				},
			},
		});
	}
}