Skip to content

Commit c66c226

Browse files
authored
Merge pull request #167 from JumboCode/sburchfield33-johnny-t06-mailchimp
Sburchfield33 johnny t06 mailchimp
2 parents 2638552 + c8bf6f7 commit c66c226

File tree

6 files changed

+180
-2
lines changed

6 files changed

+180
-2
lines changed

.github/workflows/unit-testing.yml

+2
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,5 @@ jobs:
3838
GOOGLE_BASEFOLDER: ${{ secrets.GOOGLE_BASEFOLDER }}
3939
GOOGLE_CLIENT_EMAIL: ${{ secrets.GOOGLE_CLIENT_EMAIL }}
4040
GOOGLE_PRIVATE_KEY: ${{ secrets.GOOGLE_PRIVATE_KEY }}
41+
MAILCHIMP_API_KEY: ${{ secrets.MAILCHIMP_API_KEY }}
42+
MAILCHIMP_AUDIENCE_ID: ${{ secrets.MAILCHIMP_AUDIENCE_ID }}

package-lock.json

+159-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"@fortawesome/react-fontawesome": "^0.2.0",
2020
"@hookform/error-message": "^2.0.1",
2121
"@hookform/resolvers": "^3.3.2",
22+
"@mailchimp/mailchimp_marketing": "^3.0.80",
2223
"@material-tailwind/react": "^2.0.5",
2324
"@next-auth/prisma-adapter": "^1.0.4",
2425
"@prisma/client": "^5.5.2",
@@ -40,6 +41,7 @@
4041
"zod": "^3.22.4"
4142
},
4243
"devDependencies": {
44+
"@types/mailchimp__mailchimp_marketing": "^3.0.20",
4345
"@types/node": "18.0.0",
4446
"@types/react": "18.0.14",
4547
"@types/react-datepicker": "^6.0.1",

src/app/api/emails/route.ts

+7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { NextRequest, NextResponse } from "next/server";
22
import { Email, EmailResponse } from "./route.schema";
33
import { unknownErrorResponse } from "../route.schema";
44
import { prisma } from "@server/db/client";
5+
import { mailchimp } from "@server/service";
6+
import { env } from "@env/server.mjs";
57

68
export const POST = async (request: NextRequest) => {
79
try {
@@ -56,6 +58,11 @@ export const POST = async (request: NextRequest) => {
5658
},
5759
});
5860

61+
await mailchimp.lists.addListMember(env.MAILCHIMP_AUDIENCE_ID, {
62+
email_address: body.email,
63+
status: "subscribed",
64+
});
65+
5966
return NextResponse.json(
6067
EmailResponse.parse({
6168
code: "SUCCESS",

src/env/schema.mjs

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ export const serverSchema = z.object({
2424
// https://github.com/orgs/vercel/discussions/219
2525
// Parsing \n inserts \\n
2626
GOOGLE_PRIVATE_KEY: z.string().transform((key) => key.replace(/\\n/g, "\n")),
27+
MAILCHIMP_API_KEY: z.string(),
28+
MAILCHIMP_AUDIENCE_ID: z.string(),
2729
});
2830

2931
/**

src/server/service/index.ts

+8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { google } from "googleapis";
22
import { env } from "@env/server.mjs";
3+
import mailchimp from "@mailchimp/mailchimp_marketing";
34

45
export const driveV3 = google.drive({
56
version: "v3",
@@ -11,3 +12,10 @@ export const driveV3 = google.drive({
1112
scopes: ["https://www.googleapis.com/auth/drive"],
1213
}),
1314
});
15+
16+
mailchimp.setConfig({
17+
apiKey: env.MAILCHIMP_API_KEY,
18+
server: env.MAILCHIMP_API_KEY.split("-")[1],
19+
});
20+
21+
export { mailchimp };

0 commit comments

Comments
 (0)