Skip to content

Commit 0a29477

Browse files
committed
add app params for this feature
1 parent 598a9e3 commit 0a29477

File tree

3 files changed

+64
-0
lines changed

3 files changed

+64
-0
lines changed

client/src/utils/context/appParams.constants.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ const DEFAULT_UPLOAD_THRESHOLD: AppParams["UPLOAD_THRESHOLD"] = {
6666
soft: 104_857_600,
6767
};
6868

69+
const DEFAULT_SESSION_CLASS_EMAIL_US: AppParams["SESSION_CLASS_EMAIL_US"] = {
70+
enabled: false,
71+
};
72+
6973
export const DEFAULT_APP_PARAMS: AppParams = {
7074
ANONYMOUS_SESSIONS: false,
7175
BASE_URL: "",
@@ -84,6 +88,7 @@ export const DEFAULT_APP_PARAMS: AppParams = {
8488
SENTRY_NAMESPACE: "",
8589
SENTRY_SAMPLE_RATE: "0",
8690
SENTRY_URL: "",
91+
SESSION_CLASS_EMAIL_US: DEFAULT_SESSION_CLASS_EMAIL_US,
8792
STATUSPAGE_ID: "",
8893
TEMPLATES: DEFAULT_TEMPLATES,
8994
UISERVER_URL: "",

client/src/utils/context/appParams.types.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export interface AppParams {
3838
SENTRY_NAMESPACE: string;
3939
SENTRY_SAMPLE_RATE: string; // TODO: convert to number type
4040
SENTRY_URL: string;
41+
SESSION_CLASS_EMAIL_US: SessionClassEmailUsParams;
4142
STATUSPAGE_ID: string;
4243
TEMPLATES: TemplatesParams;
4344
UISERVER_URL: string;
@@ -88,3 +89,20 @@ interface TemplatesRepositories {
8889
export interface UploadThresholdParams {
8990
soft: number;
9091
}
92+
93+
export type SessionClassEmailUsParams =
94+
| SessionClassEmailUsParamsDisabled
95+
| SessionClassEmailUsParamsEnabled;
96+
97+
interface SessionClassEmailUsParamsDisabled {
98+
enabled: false;
99+
}
100+
101+
interface SessionClassEmailUsParamsEnabled {
102+
enabled: true;
103+
email: {
104+
to: string;
105+
subject: string;
106+
body: string;
107+
};
108+
}

client/src/utils/context/appParams.utils.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import type {
2828
AppParamsStrings,
2929
PreviewThresholdParams,
3030
PrivacyBannerLayoutParams,
31+
SessionClassEmailUsParams,
3132
TemplatesParams,
3233
UploadThresholdParams,
3334
} from "./appParams.types";
@@ -79,6 +80,7 @@ export function validatedAppParams(params: unknown): AppParams {
7980
const PRIVACY_BANNER_LAYOUT = validatePrivacyBannerLayout(params_);
8081
const TEMPLATES = validateTemplates(params_);
8182
const UPLOAD_THRESHOLD = validateUploadThreshold(params_);
83+
const SESSION_CLASS_EMAIL_US = validateSessionClassEmailUs(params_);
8284

8385
return {
8486
ANONYMOUS_SESSIONS,
@@ -98,6 +100,7 @@ export function validatedAppParams(params: unknown): AppParams {
98100
SENTRY_NAMESPACE,
99101
SENTRY_SAMPLE_RATE,
100102
SENTRY_URL,
103+
SESSION_CLASS_EMAIL_US,
101104
STATUSPAGE_ID,
102105
TEMPLATES,
103106
UISERVER_URL,
@@ -302,3 +305,41 @@ function validateUploadThreshold(params: RawAppParams): UploadThresholdParams {
302305
: DEFAULT_APP_PARAMS["PREVIEW_THRESHOLD"].soft;
303306
return { soft };
304307
}
308+
309+
function validateSessionClassEmailUs(
310+
params: RawAppParams
311+
): SessionClassEmailUsParams {
312+
const value = params["SESSION_CLASS_EMAIL_US"];
313+
if (typeof value !== "object" || value == null) {
314+
return DEFAULT_APP_PARAMS["SESSION_CLASS_EMAIL_US"];
315+
}
316+
317+
const rawEmailUsParams = value as {
318+
[key: string]: unknown;
319+
};
320+
321+
const enabled = !!rawEmailUsParams.enabled;
322+
323+
const to = typeof rawEmailUsParams.to === "string" ? rawEmailUsParams.to : "";
324+
325+
const subject =
326+
typeof rawEmailUsParams.subject === "string"
327+
? rawEmailUsParams.subject
328+
: "";
329+
330+
const body =
331+
typeof rawEmailUsParams.body === "string" ? rawEmailUsParams.body : "";
332+
333+
if (enabled && to) {
334+
return {
335+
enabled,
336+
email: {
337+
to,
338+
subject,
339+
body,
340+
},
341+
};
342+
}
343+
344+
return DEFAULT_APP_PARAMS["SESSION_CLASS_EMAIL_US"];
345+
}

0 commit comments

Comments
 (0)