| 77 | } |
| 78 | |
| 79 | #getTemplate(data: DeliverEmail): { |
| 80 | subject: string; |
| 81 | component: ReactElement; |
| 82 | } { |
| 83 | switch (data.email) { |
| 84 | case "welcome": |
| 85 | return { |
| 86 | subject: "✨ Welcome to Trigger.dev!", |
| 87 | component: <WelcomeEmail name={data.name} />, |
| 88 | }; |
| 89 | case "magic_link": |
| 90 | return { |
| 91 | subject: "Magic sign-in link for Trigger.dev", |
| 92 | component: <MagicLinkEmail magicLink={data.magicLink} />, |
| 93 | }; |
| 94 | case "invite": |
| 95 | return { |
| 96 | subject: `You've been invited to join ${data.orgName} on Trigger.dev`, |
| 97 | component: <InviteEmail {...data} />, |
| 98 | }; |
| 99 | case "alert-attempt": { |
| 100 | return { |
| 101 | subject: `Error on ${data.taskIdentifier} [${data.version}.${data.environment}] ${data.error.message}`, |
| 102 | component: <AlertAttemptFailureEmail {...data} />, |
| 103 | }; |
| 104 | } |
| 105 | case "alert-deployment-failure": { |
| 106 | return { |
| 107 | subject: `Deployment ${data.version} [${data.environment}] failed: ${data.error.name}`, |
| 108 | component: <AlertDeploymentFailureEmail {...data} />, |
| 109 | }; |
| 110 | } |
| 111 | case "alert-deployment-success": { |
| 112 | return { |
| 113 | subject: `Deployment ${data.version} [${data.environment}] succeeded`, |
| 114 | component: <AlertDeploymentSuccessEmail {...data} />, |
| 115 | }; |
| 116 | } |
| 117 | } |
| 118 | } |
| 119 | |
| 120 | async #sendEmail({ to, subject, react }: { to: string; subject: string; react: ReactElement }) { |
| 121 | if (this.#client) { |