* WIP * Locked fields manager * Leftovers * Bad merge fix * Type import fix * Moving away from classes * Progress refactoring locked logic * Covering apps, webhooks and workflows * Supporting webhooks and workflows (TBT) * Restoring yarn.lock * Progress * Refactoring code, adding default values * Fixing CRUD for children * Connect app link and case-sensitive lib renaming * Translation missing * Locked indicators, empty screens, locations * Member card and hidden status + missing i18n * Missing existent children shown * Showing preview for already created children * Email notification almost in place * Making progress over notif email * Fixing nodemailer by mixed FE/BE mixup * Delete dialog * Adding tests * New test * Reverting unneeded change * Removed console.log * Tweaking email * Reverting not applicable webhook changes * Reverting dev email api * Fixing last changes due to tests * Changing user-evType relationship * Availability and slug replacement tweaks * Fixing event type delete * Sometimes slug is not there... * Removing old webhooks references Changed slug hint * Fixing types * Fixing hiding event types actions * Changing delete dialog text * Removing unneeded code * Applying feedback * Update yarn.lock * Making sure locked fields values are static * Applying feedback * Feedback + relying on children list, not users * Removing console.log * PR Feedback * Telemetry for slug replacement action * More unit tests * Relying on schedule and editor tweaks * Fixing conteiner classname * PR Feedback * PR Feedback * Updating unit tests * Moving stuff to ee, added feature flag * type fix * Including e2e * Reverting unneeded changes in EmptyScreen * Fixing some UI issues after merging tokens * Fixing missing disabled locked fields * Theme fixes + e2e potential fix * Fixing e2e * Fixing login relying on network * Tweaking e2e * Removing unneeded code --------- Co-authored-by: Peer Richelsen <peeroke@gmail.com> Co-authored-by: zomars <zomars@me.com>
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import type { TFunction } from "next-i18next";
|
|
|
|
import { renderEmail } from "..";
|
|
import BaseEmail from "./_base-email";
|
|
|
|
export default class SlugReplacementEmail extends BaseEmail {
|
|
email: string;
|
|
name: string;
|
|
teamName: string | null;
|
|
slug: string;
|
|
t: TFunction;
|
|
|
|
constructor(email: string, name: string, teamName: string | null, slug: string, t: TFunction) {
|
|
super();
|
|
this.email = email;
|
|
this.name = name;
|
|
this.teamName = teamName;
|
|
this.slug = slug;
|
|
this.t = t;
|
|
}
|
|
|
|
protected getNodeMailerPayload(): Record<string, unknown> {
|
|
return {
|
|
from: `Cal.com <${this.getMailerOptions().from}>`,
|
|
to: this.email,
|
|
subject: this.t("email_subject_slug_replacement", { slug: this.slug }),
|
|
html: renderEmail("SlugReplacementEmail", {
|
|
slug: this.slug,
|
|
name: this.name,
|
|
teamName: this.teamName || "",
|
|
t: this.t,
|
|
}),
|
|
text: this.getTextBody(),
|
|
};
|
|
}
|
|
|
|
protected getTextBody(): string {
|
|
return `${this.t("email_body_slug_replacement_notice", { slug: this.slug })} ${this.t(
|
|
"email_body_slug_replacement_suggestion"
|
|
)}`;
|
|
}
|
|
}
|