From 68e7d6c66e88955a8ca165156b42cdd5f491b66e Mon Sep 17 00:00:00 2001 From: Mike Wickett Date: Thu, 6 Mar 2025 21:34:06 -0500 Subject: [PATCH] little adjustment to email sending --- src/server/email.ts | 132 ++++++++++++++++++-------------------------- 1 file changed, 54 insertions(+), 78 deletions(-) diff --git a/src/server/email.ts b/src/server/email.ts index 7ba9f4f..efcd89e 100644 --- a/src/server/email.ts +++ b/src/server/email.ts @@ -7,32 +7,27 @@ const resend = new Resend(process.env.RESEND_API_KEY); const sender = "Blitzer "; -interface EmailResult { - success: boolean; - error?: string; -} - -export async function sendWelcomeEmail(params: { - email: string; - username: string; +async function sendEmail(options: { + to: string[]; + subject: string; + react: any; + text: string; }): Promise { try { const { data, error } = await resend.emails.send({ from: sender, - to: [params.email], - subject: "Welcome to Blitzer!", - react: WelcomeEmail({ username: params.username }).component, - text: await WelcomeEmail({ username: params.username }).text, + to: options.to, + subject: options.subject, + react: options.react, + text: options.text, }); - if (error) { - console.error("Failed to send welcome email:", error); + console.error("Failed to send email:", error); return { success: false, error: error.message }; } - return { success: true }; } catch (error) { - console.error("Error sending welcome email:", error); + console.error("Error sending email:", error); return { success: false, error: error instanceof Error ? error.message : "Unknown error", @@ -40,6 +35,24 @@ export async function sendWelcomeEmail(params: { } } +interface EmailResult { + success: boolean; + error?: string; +} + +export async function sendWelcomeEmail(params: { + email: string; + username: string; +}): Promise { + const emailTemplate = WelcomeEmail({ username: params.username }); + return await sendEmail({ + to: [params.email], + subject: "Welcome to Blitzer!", + react: emailTemplate.component, + text: await emailTemplate.text, + }); +} + export async function sendGameCompleteEmail(params: { email: string; username: string; @@ -47,40 +60,21 @@ export async function sendGameCompleteEmail(params: { isWinner: boolean; gameId: string; }): Promise { - try { - const { data, error } = await resend.emails.send({ - from: sender, - to: [params.email], - subject: params.isWinner - ? "Congratulations on your win! 🎉" - : `Game Complete - ${params.winnerUsername} won!`, - react: GameCompleteEmail({ - username: params.username, - winnerUsername: params.winnerUsername, - isWinner: params.isWinner, - gameId: params.gameId, - }).component, - text: await GameCompleteEmail({ - username: params.username, - winnerUsername: params.winnerUsername, - isWinner: params.isWinner, - gameId: params.gameId, - }).text, - }); - - if (error) { - console.error("Failed to send game complete email:", error); - return { success: false, error: error.message }; - } - - return { success: true }; - } catch (error) { - console.error("Error sending game complete email:", error); - return { - success: false, - error: error instanceof Error ? error.message : "Unknown error", - }; - } + const emailTemplate = GameCompleteEmail({ + username: params.username, + winnerUsername: params.winnerUsername, + isWinner: params.isWinner, + gameId: params.gameId, + }); + const subject = params.isWinner + ? "Congratulations on your win! 🎉" + : `Game Complete - ${params.winnerUsername} won!`; + return await sendEmail({ + to: [params.email], + subject, + react: emailTemplate.component, + text: await emailTemplate.text, + }); } export async function sendFriendRequestEmail(params: { @@ -88,32 +82,14 @@ export async function sendFriendRequestEmail(params: { username: string; fromUsername: string; }): Promise { - try { - const { data, error } = await resend.emails.send({ - from: sender, - to: [params.email], - subject: `${params.fromUsername} sent you a friend request on Blitzer`, - react: FriendRequestEmail({ - username: params.username, - fromUsername: params.fromUsername, - }).component, - text: await FriendRequestEmail({ - username: params.username, - fromUsername: params.fromUsername, - }).text, - }); - - if (error) { - console.error("Failed to send friend request email:", error); - return { success: false, error: error.message }; - } - - return { success: true }; - } catch (error) { - console.error("Error sending friend request email:", error); - return { - success: false, - error: error instanceof Error ? error.message : "Unknown error", - }; - } + const emailTemplate = FriendRequestEmail({ + username: params.username, + fromUsername: params.fromUsername, + }); + return await sendEmail({ + to: [params.email], + subject: `${params.fromUsername} sent you a friend request on Blitzer`, + react: emailTemplate.component, + text: await emailTemplate.text, + }); }