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,
},
},
});
}
}
|