Skip to content

Commit f74fcf8

Browse files
committed
Finish react email migration
1 parent d9e5e6a commit f74fcf8

File tree

7 files changed

+35
-36
lines changed

7 files changed

+35
-36
lines changed

api/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
"scripts": {
88
"test": "./scripts/run-integration.sh",
99
"bore": "bore local 3000 --to bore.pub",
10-
"start": "node index.js",
11-
"dev": "nodemon index.js",
12-
"email:export": "cd ../react-email && yarn export",
13-
"email:dev": "cd ../react-email && yarn dev",
10+
"start": "node --import tsx index.js",
11+
"dev": "nodemon --import tsx index.js",
12+
"email:export": "cd ./react-email && yarn export",
13+
"email:dev": "cd ./react-email && yarn dev",
1414
"coverage": "yarn test --coverage",
1515
"lint": "eslint ."
1616
},

api/react-email/emails/forgot-password.jsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const styles = {
4949
},
5050
};
5151

52-
export const WelcomeEmail = ({ name, token }) => (
52+
export const ForgotPasswordEmail = ({ name, token }) => (
5353
<Html>
5454
<Head>
5555
<Font
@@ -105,12 +105,9 @@ export const WelcomeEmail = ({ name, token }) => (
105105
</Html>
106106
);
107107

108-
WelcomeEmail.PreviewProps = {
108+
ForgotPasswordEmail.PreviewProps = {
109109
name: "Jack Crane",
110-
email: "jack@jackcrane.rocks",
111-
ip: "127.0.0.1",
112-
regionName: "California",
113-
city: "San Francisco",
110+
token: "1234567890",
114111
};
115112

116-
export default WelcomeEmail;
113+
export default ForgotPasswordEmail;

api/react-email/emails/login.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const styles = {
4949
},
5050
};
5151

52-
export const WelcomeEmail = ({ name, city, regionName, ip }) => (
52+
export const LoginEmail = ({ name, city, regionName, ip }) => (
5353
<Html>
5454
<Head>
5555
<Font
@@ -104,12 +104,12 @@ export const WelcomeEmail = ({ name, city, regionName, ip }) => (
104104
</Html>
105105
);
106106

107-
WelcomeEmail.PreviewProps = {
107+
LoginEmail.PreviewProps = {
108108
name: "Jack Crane",
109109
email: "jack@jackcrane.rocks",
110110
ip: "127.0.0.1",
111111
regionName: "California",
112112
city: "San Francisco",
113113
};
114114

115-
export default WelcomeEmail;
115+
export default LoginEmail;

api/react-email/emails/welcome.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ const styles = {
4848
},
4949
};
5050

51-
export const WelcomeEmail = ({ name, email }) => (
51+
export const WelcomeEmail = ({ name, token }) => (
5252
<Html>
5353
<Head>
5454
<Font
@@ -96,7 +96,7 @@ export const WelcomeEmail = ({ name, email }) => (
9696
</Text>
9797
<Button
9898
as="a"
99-
href="https://snowcap.jackcrane.rocks/api/auth/verify?token={{token}}"
99+
href={`https://snowcap.jackcrane.rocks/api/auth/verify?token=${token}`}
100100
style={styles.button}
101101
>
102102
Confirm Email
@@ -116,7 +116,7 @@ export const WelcomeEmail = ({ name, email }) => (
116116

117117
WelcomeEmail.PreviewProps = {
118118
name: "Jack Crane",
119-
email: "jack@jackcrane.rocks",
119+
token: "token",
120120
};
121121

122122
export default WelcomeEmail;

api/routes/auth/login.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,10 @@ import jwt from "jsonwebtoken";
44
import dotenv from "dotenv";
55
import bcrypt from "bcrypt";
66
import { sendEmail } from "#postmark";
7-
import Handlebars from "handlebars";
8-
import { readFileSync } from "fs";
97
import { getGeolocation } from "#geolocation";
108
import { forceTestError } from "#forceError";
11-
12-
const welcomeEmail = readFileSync("./react-email/complete/login.hbs", "utf8");
13-
const template = Handlebars.compile(welcomeEmail);
9+
import LoginEmail from "#emails/login.jsx";
10+
import { render } from "@react-email/render";
1411

1512
dotenv.config();
1613

@@ -63,7 +60,9 @@ export const post = async (req, res) => {
6360
From: "Snowcap Support <snowcap@jackcrane.rocks>",
6461
To: email,
6562
Subject: "New login to Snowcap",
66-
HtmlBody: template({ name: user.name, city, regionName, ip }),
63+
HtmlBody: render(
64+
LoginEmail.LoginEmail({ name: user.name, city, regionName, ip })
65+
),
6766
userId: user.id,
6867
});
6968
}

api/routes/auth/register.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@ import { z } from "zod";
33
import { prisma } from "#prisma";
44
import { LogType } from "@prisma/client";
55
import { sendEmail } from "#postmark";
6-
import Handlebars from "handlebars";
7-
import { readFileSync } from "fs";
86
import { forceTestError } from "#forceError";
9-
10-
const welcomeEmail = readFileSync("./react-email/complete/welcome.hbs", "utf8");
11-
const template = Handlebars.compile(welcomeEmail);
7+
import WelcomeEmail from "#emails/welcome.jsx";
8+
import { render } from "@react-email/render";
129

1310
export const post = async (req, res) => {
1411
try {
@@ -71,7 +68,12 @@ export const post = async (req, res) => {
7168
From: "Snowcap Support <snowcap@jackcrane.rocks>",
7269
To: email,
7370
Subject: "Welcome to Snowcap",
74-
HtmlBody: template({ name: user.name, token: emailVerificaton.id }),
71+
HtmlBody: render(
72+
WelcomeEmail.WelcomeEmail({
73+
name: user.name,
74+
token: emailVerificaton.id,
75+
})
76+
),
7577
userId: user.id,
7678
});
7779

api/routes/auth/reset-password.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
import { sendEmail } from "#postmark";
22
import { prisma } from "#prisma";
33
import { LogType } from "@prisma/client";
4-
import Handlebars from "handlebars";
5-
import { readFileSync } from "fs";
64
import { z } from "zod";
75
import bcrypt from "bcrypt";
86
import { forceTestError } from "#forceError";
9-
10-
const template = Handlebars.compile(
11-
readFileSync("./react-email/complete/forgot-password.hbs", "utf8")
12-
);
7+
import ForgotPasswordEmail from "#emails/forgot-password.jsx";
8+
import { render } from "@react-email/render";
139

1410
export const put = async (req, res) => {
1511
try {
@@ -50,7 +46,12 @@ export const put = async (req, res) => {
5046
From: "Snowcap Support <snowcap@jackcrane.rocks>",
5147
To: email,
5248
Subject: "Password Reset",
53-
HtmlBody: template({ name: user.name, token: passwordResetToken.id }),
49+
HtmlBody: render(
50+
ForgotPasswordEmail.ForgotPasswordEmail({
51+
name: user.name,
52+
token: passwordResetToken.id,
53+
})
54+
),
5455
userId: user.id,
5556
});
5657

0 commit comments

Comments
 (0)