Skip to content

Commit 3c5caa2

Browse files
authored
✨ Feat: Create separate tags for waitlist and sign up (#425)
* 🐛 Fix: use string for schemaVersion in waitlist.controller.test * ✨ Feat: create EMAILER_USER_TAG_ID And use this tag when a user signs up (instead of _WAITLIST_ID)
1 parent 14820cb commit 3c5caa2

File tree

8 files changed

+31
-11
lines changed

8 files changed

+31
-11
lines changed

packages/backend/.env.example

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ PROD_DOMAIN=app.yourdomain.com
7171
# integration during signup will be skipped
7272

7373
EMAILER_API_SECRET=UNIQUE_SECRET_FROM_YOUR_KIT_ACCOUNT
74-
EMAILER_TAG_ID=YOUR_TAG_ID # get this from Kit
74+
EMAILER_WAITLIST_TAG_ID=YOUR_WAITLIST_TAG_ID
75+
EMAILER_USER_TAG_ID=YOUR_USER_TAG_ID
7576

7677
####################################################
7778
# 7. Debug (optional) #

packages/backend/src/__tests__/backend.test.init.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ process.env.CHANNEL_EXPIRATION_MIN = 5;
1212
process.env.SUPERTOKENS_URI = "sTUri";
1313
process.env.SUPERTOKENS_KEY = "sTKey";
1414
process.env.EMAILER_API_SECRET = "emailerApiSecret";
15-
process.env.EMAILER_TAG_ID = 1234567;
15+
process.env.EMAILER_WAITLIST_TAG_ID = 1234567;
16+
process.env.EMAILER_USER_TAG_ID = 910111213;
1617
process.env.TOKEN_GCAL_NOTIFICATION = "secretToken1";
1718
process.env.TOKEN_COMPASS_SYNC = "secretToken2";

packages/backend/src/common/constants/env.constants.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ const EnvSchema = z
2020
CLIENT_SECRET: z.string().nonempty(),
2121
DB: z.string().nonempty(),
2222
EMAILER_SECRET: z.string().nonempty().optional(),
23-
EMAILER_TAG_ID: z.string().nonempty().optional(),
23+
EMAILER_WAITLIST_TAG_ID: z.string().nonempty().optional(),
24+
EMAILER_USER_TAG_ID: z.string().nonempty().optional(),
2425
MONGO_URI: z.string().nonempty(),
2526
NODE_ENV: z.nativeEnum(NodeEnv),
2627
ORIGINS_ALLOWED: z.array(z.string().nonempty()).default([]),
@@ -41,7 +42,8 @@ export const ENV = {
4142
CLIENT_SECRET: process.env["CLIENT_SECRET"],
4243
DB: IS_DEV ? "dev_calendar" : "prod_calendar",
4344
EMAILER_SECRET: process.env["EMAILER_API_SECRET"],
44-
EMAILER_TAG_ID: process.env["EMAILER_TAG_ID"],
45+
EMAILER_WAITLIST_TAG_ID: process.env["EMAILER_WAITLIST_TAG_ID"],
46+
EMAILER_USER_TAG_ID: process.env["EMAILER_USER_TAG_ID"],
4547
MONGO_URI: process.env["MONGO_URI"],
4648
NODE_ENV: _nodeEnv,
4749
ORIGINS_ALLOWED: process.env["CORS"] ? process.env["CORS"].split(",") : [],
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { ENV } from "./env.constants";
2+
3+
export const isMissingUserTagId = () => {
4+
return !ENV.EMAILER_SECRET || !ENV.EMAILER_USER_TAG_ID;
5+
};
6+
7+
export const isMissingWaitlistTagId = () => {
8+
return !ENV.EMAILER_SECRET || !ENV.EMAILER_WAITLIST_TAG_ID;
9+
};

packages/backend/src/user/services/user.service.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import compassAuthService from "@backend/auth/services/compass.auth.service";
1010
import { getGcalClient } from "@backend/auth/services/google.auth.service";
1111
import calendarService from "@backend/calendar/services/calendar.service";
1212
import { ENV } from "@backend/common/constants/env.constants";
13+
import { isMissingUserTagId } from "@backend/common/constants/env.util";
1314
import { AuthError } from "@backend/common/errors/auth/auth.errors";
1415
import { error } from "@backend/common/errors/handlers/error.handler";
1516
import { initSupertokens } from "@backend/common/middleware/supertokens.middleware";
@@ -126,13 +127,16 @@ class UserService {
126127
const cUser = await this.createUser(gUser, gRefreshToken);
127128
const { userId } = cUser;
128129

129-
if (!ENV.EMAILER_TAG_ID || !ENV.EMAILER_SECRET) {
130+
if (isMissingUserTagId()) {
130131
logger.warn(
131132
"Did not tag subscriber due to missing EMAILER_ ENV value(s)",
132133
);
133134
} else {
134135
const subscriber = mapCompassUserToEmailSubscriber(cUser);
135-
await EmailService.addTagToSubscriber(subscriber, ENV.EMAILER_TAG_ID);
136+
await EmailService.addTagToSubscriber(
137+
subscriber,
138+
ENV.EMAILER_USER_TAG_ID!,
139+
);
136140
}
137141

138142
const gCalendarIds = await initSync(gcalClient, userId);

packages/backend/src/waitlist/controller/waitlist.controller.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ describe("POST /api/waitlist", () => {
8080
workingTowardsMainGoal: "yes",
8181
isWillingToShare: false,
8282
waitlistedAt: new Date().toISOString(),
83-
schemaVersion: 0,
83+
schemaVersion: "0",
8484
};
8585
const res = await request(app).post("/api/waitlist").send(answers);
8686
expect(res.status).toBe(500);

packages/backend/src/waitlist/controller/waitlist.controller.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
AnswerMap,
66
Schema_Waitlist,
77
} from "@core/types/waitlist/waitlist.types";
8-
import { ENV } from "@backend/common/constants/env.constants";
8+
import { isMissingWaitlistTagId } from "@backend/common/constants/env.util";
99
import WaitlistService from "../service/waitlist.service";
1010

1111
const logger = Logger("app:waitlist.controller");
@@ -15,7 +15,7 @@ export class WaitlistController {
1515
req: Request<unknown, unknown, Schema_Waitlist>,
1616
res: Response,
1717
) {
18-
if (!ENV.EMAILER_SECRET || !ENV.EMAILER_TAG_ID) {
18+
if (isMissingWaitlistTagId()) {
1919
return res.status(500).json({ error: "Emailer values are missing" });
2020
}
2121

packages/backend/src/waitlist/service/waitlist.service.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class WaitlistService {
1414
email: string,
1515
answer: Schema_Answers,
1616
): Promise<Result_Waitlist> {
17-
if (ENV.EMAILER_SECRET && ENV.EMAILER_TAG_ID) {
17+
if (ENV.EMAILER_SECRET && ENV.EMAILER_WAITLIST_TAG_ID) {
1818
const subscriber: Subscriber = {
1919
email_address: email,
2020
first_name: answer.firstName,
@@ -25,7 +25,10 @@ class WaitlistService {
2525
Source: answer.source,
2626
},
2727
};
28-
await EmailService.addTagToSubscriber(subscriber, ENV.EMAILER_TAG_ID);
28+
await EmailService.addTagToSubscriber(
29+
subscriber,
30+
ENV.EMAILER_WAITLIST_TAG_ID,
31+
);
2932
} else {
3033
logger.warn("Did not tag subscriber due to missing EMAILER env values");
3134
}

0 commit comments

Comments
 (0)