From 8e756d7648e920f6ad8d6332f828e90bfa26ba0b Mon Sep 17 00:00:00 2001 From: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> Date: Tue, 10 Jan 2023 13:32:50 -0500 Subject: [PATCH] Fix custom event names in emails (#6375) * Fix What for normal bookings * Fix subject on bookings with seats * WIP * Change more strings Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- apps/web/public/static/locales/en/common.json | 14 ++++++++------ .../src/templates/BaseScheduledEmail.tsx | 2 +- .../attendee-awaiting-payment-email.ts | 3 +-- .../templates/attendee-cancelled-email.ts | 3 +-- .../templates/attendee-declined-email.ts | 3 +-- .../emails/templates/attendee-request-email.ts | 3 +-- .../templates/attendee-rescheduled-email.ts | 3 +-- .../templates/attendee-scheduled-email.ts | 11 ++--------- .../templates/organizer-cancelled-email.ts | 3 +-- .../templates/organizer-request-email.ts | 6 +----- .../organizer-request-reminder-email.ts | 3 +-- .../templates/organizer-rescheduled-email.ts | 3 +-- .../templates/organizer-scheduled-email.ts | 18 ++---------------- 13 files changed, 22 insertions(+), 53 deletions(-) diff --git a/apps/web/public/static/locales/en/common.json b/apps/web/public/static/locales/en/common.json index 9be4879322..e37b21a0cb 100644 --- a/apps/web/public/static/locales/en/common.json +++ b/apps/web/public/static/locales/en/common.json @@ -9,8 +9,8 @@ "calcom_explained": "{{appName}} provides scheduling infrastructure for absolutely everyone.", "have_any_questions": "Have questions? We're here to help.", "reset_password_subject": "{{appName}}: Reset password instructions", - "event_declined_subject": "Declined: {{eventType}} with {{name}} at {{date}}", - "event_cancelled_subject": "Cancelled: {{eventType}} with {{name}} at {{date}}", + "event_declined_subject": "Declined: {{title}} at {{date}}", + "event_cancelled_subject": "Cancelled: {{title}} at {{date}}", "event_request_declined": "Your event request has been declined", "event_request_declined_recurring": "Your recurring event request has been declined", "event_request_cancelled": "Your scheduled event was cancelled", @@ -32,7 +32,7 @@ "refund_failed": "The refund for the event {{eventType}} with {{userName}} on {{date}} failed.", "check_with_provider_and_user": "Please check with your payment provider and {{user}} how to handle this.", "a_refund_failed": "A refund failed", - "awaiting_payment_subject": "Awaiting Payment: {{eventType}} with {{name}} on {{date}}", + "awaiting_payment_subject": "Awaiting Payment: {{title}} on {{date}}", "meeting_awaiting_payment": "Your meeting is awaiting payment", "help": "Help", "price": "Price", @@ -64,11 +64,11 @@ "someone_requested_an_event": "Someone has requested to schedule an event on your calendar.", "someone_requested_password_reset": "Someone has requested a link to change your password.", "password_reset_instructions": "If you didn't request this, you can safely ignore this email and your password will not be changed.", - "event_awaiting_approval_subject": "Awaiting Approval: {{eventType}} with {{name}} at {{date}}", + "event_awaiting_approval_subject": "Awaiting Approval: {{eventType}} at {{date}}", "event_still_awaiting_approval": "An event is still waiting for your approval", - "booking_submitted_subject": "Booking Submitted: {{eventType}} with {{name}} at {{date}}", + "booking_submitted_subject": "Booking Submitted: {{title}} at {{date}}", "your_meeting_has_been_booked": "Your meeting has been booked", - "event_type_has_been_rescheduled_on_time_date": "Your {{eventType}} with {{name}} has been rescheduled to {{date}}.", + "event_type_has_been_rescheduled_on_time_date": "Your {{title}} has been rescheduled to {{date}}.", "event_has_been_rescheduled": "Updated - Your event has been rescheduled", "request_reschedule_title_attendee": "Request to reschedule your booking", "request_reschedule_subtitle": "{{organizer}} has cancelled the booking and requested you to pick another time.", @@ -1492,6 +1492,8 @@ "invalid_admin_password": "You are set as an admin but you do not have a password length of at least 15 characters", "change_password_admin": "Change Password to gain admin access", "username_already_taken": "Username is already taken", + "new_attendee": "New Attendee", + "awaiting_approval": "Awaiting Approval", "requires_google_calendar": "This app requires a Google Calendar connection", "connected_google_calendar": "You have connected a Google Calendar account.", "using_meet_requires_calendar": "Using Google Meet requires a connected Google Calendar", diff --git a/packages/emails/src/templates/BaseScheduledEmail.tsx b/packages/emails/src/templates/BaseScheduledEmail.tsx index 107901277f..b396002621 100644 --- a/packages/emails/src/templates/BaseScheduledEmail.tsx +++ b/packages/emails/src/templates/BaseScheduledEmail.tsx @@ -66,7 +66,7 @@ export const BaseScheduledEmail = ( withSpacer /> - + diff --git a/packages/emails/templates/attendee-awaiting-payment-email.ts b/packages/emails/templates/attendee-awaiting-payment-email.ts index 8c012190e5..df135ad52b 100644 --- a/packages/emails/templates/attendee-awaiting-payment-email.ts +++ b/packages/emails/templates/attendee-awaiting-payment-email.ts @@ -8,8 +8,7 @@ export default class AttendeeAwaitingPaymentEmail extends AttendeeScheduledEmail from: `${this.calEvent.organizer.name} <${this.getMailerOptions().from}>`, replyTo: this.calEvent.organizer.email, subject: `${this.attendee.language.translate("awaiting_payment_subject", { - eventType: this.calEvent.type, - name: this.calEvent.team?.name || this.calEvent.organizer.name, + title: this.calEvent.title, date: this.getFormattedDate(), })}`, html: renderEmail("AttendeeAwaitingPaymentEmail", { diff --git a/packages/emails/templates/attendee-cancelled-email.ts b/packages/emails/templates/attendee-cancelled-email.ts index 13d6f12e37..ecc128cadc 100644 --- a/packages/emails/templates/attendee-cancelled-email.ts +++ b/packages/emails/templates/attendee-cancelled-email.ts @@ -8,8 +8,7 @@ export default class AttendeeCancelledEmail extends AttendeeScheduledEmail { from: `${this.calEvent.organizer.name} <${this.getMailerOptions().from}>`, replyTo: this.calEvent.organizer.email, subject: `${this.t("event_cancelled_subject", { - eventType: this.calEvent.type, - name: this.calEvent.team?.name || this.calEvent.organizer.name, + title: this.calEvent.title, date: this.getFormattedDate(), })}`, html: renderEmail("AttendeeCancelledEmail", { diff --git a/packages/emails/templates/attendee-declined-email.ts b/packages/emails/templates/attendee-declined-email.ts index e86806d832..2d7fe6d33b 100644 --- a/packages/emails/templates/attendee-declined-email.ts +++ b/packages/emails/templates/attendee-declined-email.ts @@ -8,8 +8,7 @@ export default class AttendeeDeclinedEmail extends AttendeeScheduledEmail { from: `${this.calEvent.organizer.name} <${this.getMailerOptions().from}>`, replyTo: this.calEvent.organizer.email, subject: `${this.t("event_declined_subject", { - eventType: this.calEvent.type, - name: this.calEvent.team?.name || this.calEvent.organizer.name, + title: this.calEvent.title, date: this.getFormattedDate(), })}`, html: renderEmail("AttendeeDeclinedEmail", { diff --git a/packages/emails/templates/attendee-request-email.ts b/packages/emails/templates/attendee-request-email.ts index 3b77853f71..811c7e95e6 100644 --- a/packages/emails/templates/attendee-request-email.ts +++ b/packages/emails/templates/attendee-request-email.ts @@ -19,8 +19,7 @@ export default class AttendeeRequestEmail extends AttendeeScheduledEmail { from: `${APP_NAME} <${this.getMailerOptions().from}>`, to: toAddresses.join(","), subject: `${this.calEvent.attendees[0].language.translate("booking_submitted_subject", { - eventType: this.calEvent.type, - name: this.calEvent.team?.name || this.calEvent.organizer.name, + title: this.calEvent.title, date: this.getFormattedDate(), })}`, html: renderEmail("AttendeeRequestEmail", { diff --git a/packages/emails/templates/attendee-rescheduled-email.ts b/packages/emails/templates/attendee-rescheduled-email.ts index aca08219b9..0c7e183335 100644 --- a/packages/emails/templates/attendee-rescheduled-email.ts +++ b/packages/emails/templates/attendee-rescheduled-email.ts @@ -12,8 +12,7 @@ export default class AttendeeRescheduledEmail extends AttendeeScheduledEmail { from: `${this.calEvent.organizer.name} <${this.getMailerOptions().from}>`, replyTo: [...this.calEvent.attendees.map(({ email }) => email), this.calEvent.organizer.email], subject: `${this.attendee.language.translate("event_type_has_been_rescheduled_on_time_date", { - eventType: this.calEvent.type, - name: this.calEvent.team?.name || this.calEvent.organizer.name, + title: this.calEvent.title, date: this.getFormattedDate(), })}`, html: renderEmail("AttendeeRescheduledEmail", { diff --git a/packages/emails/templates/attendee-scheduled-email.ts b/packages/emails/templates/attendee-scheduled-email.ts index c0897daadf..67d109f9fc 100644 --- a/packages/emails/templates/attendee-scheduled-email.ts +++ b/packages/emails/templates/attendee-scheduled-email.ts @@ -47,10 +47,7 @@ export default class AttendeeScheduledEmail extends BaseEmail { .map((v, i) => (i === 1 ? v + 1 : v)) as DateArray, startInputType: "utc", productId: "calendso/ics", - title: this.t("ics_event_title", { - eventType: this.calEvent.type, - name: this.calEvent.attendees[0].name, - }), + title: this.calEvent.title, description: this.getTextBody(), duration: { minutes: dayjs(this.calEvent.endTime).diff(dayjs(this.calEvent.startTime), "minute") }, organizer: { name: this.calEvent.organizer.name, email: this.calEvent.organizer.email }, @@ -76,11 +73,7 @@ export default class AttendeeScheduledEmail extends BaseEmail { to: `${this.attendee.name} <${this.attendee.email}>`, from: `${this.calEvent.organizer.name} <${this.getMailerOptions().from}>`, replyTo: [...this.calEvent.attendees.map(({ email }) => email), this.calEvent.organizer.email], - subject: `${this.t("confirmed_event_type_subject", { - eventType: this.calEvent.type, - name: this.calEvent.team?.name || this.calEvent.organizer.name, - date: this.getFormattedDate(), - })}`, + subject: `${this.calEvent.title}`, html: renderEmail("AttendeeScheduledEmail", { calEvent: this.calEvent, attendee: this.attendee, diff --git a/packages/emails/templates/organizer-cancelled-email.ts b/packages/emails/templates/organizer-cancelled-email.ts index c7a3be2cbe..b3842b2d53 100644 --- a/packages/emails/templates/organizer-cancelled-email.ts +++ b/packages/emails/templates/organizer-cancelled-email.ts @@ -19,8 +19,7 @@ export default class OrganizerCancelledEmail extends OrganizerScheduledEmail { from: `${APP_NAME} <${this.getMailerOptions().from}>`, to: toAddresses.join(","), subject: `${this.t("event_cancelled_subject", { - eventType: this.calEvent.type, - name: this.calEvent.attendees[0].name, + title: this.calEvent.title, date: this.getFormattedDate(), })}`, html: renderEmail("OrganizerCancelledEmail", { diff --git a/packages/emails/templates/organizer-request-email.ts b/packages/emails/templates/organizer-request-email.ts index 11925937e1..cf9549d825 100644 --- a/packages/emails/templates/organizer-request-email.ts +++ b/packages/emails/templates/organizer-request-email.ts @@ -18,11 +18,7 @@ export default class OrganizerRequestEmail extends OrganizerScheduledEmail { return { from: `${APP_NAME} <${this.getMailerOptions().from}>`, to: toAddresses.join(","), - subject: `${this.t("event_awaiting_approval_subject", { - eventType: this.calEvent.type, - name: this.calEvent.attendees[0].name, - date: this.getFormattedDate(), - })}`, + subject: `${this.t("awaiting_approval")}: ${this.calEvent.title}`, html: renderEmail("OrganizerRequestEmail", { calEvent: this.calEvent, attendee: this.calEvent.organizer, diff --git a/packages/emails/templates/organizer-request-reminder-email.ts b/packages/emails/templates/organizer-request-reminder-email.ts index 61e7c782b2..2a3d0ebff1 100644 --- a/packages/emails/templates/organizer-request-reminder-email.ts +++ b/packages/emails/templates/organizer-request-reminder-email.ts @@ -19,8 +19,7 @@ export default class OrganizerRequestReminderEmail extends OrganizerRequestEmail from: `${APP_NAME} <${this.getMailerOptions().from}>`, to: toAddresses.join(","), subject: `${this.t("event_awaiting_approval_subject", { - eventType: this.calEvent.type, - name: this.calEvent.attendees[0].name, + title: this.calEvent.title, date: this.getFormattedDate(), })}`, html: renderEmail("OrganizerRequestReminderEmail", { diff --git a/packages/emails/templates/organizer-rescheduled-email.ts b/packages/emails/templates/organizer-rescheduled-email.ts index c38a70fc91..31b1fe45c9 100644 --- a/packages/emails/templates/organizer-rescheduled-email.ts +++ b/packages/emails/templates/organizer-rescheduled-email.ts @@ -23,8 +23,7 @@ export default class OrganizerRescheduledEmail extends OrganizerScheduledEmail { from: `${APP_NAME} <${this.getMailerOptions().from}>`, to: toAddresses.join(","), subject: `${this.calEvent.organizer.language.translate("event_type_has_been_rescheduled_on_time_date", { - eventType: this.calEvent.type, - name: this.calEvent.attendees[0].name, + title: this.calEvent.title, date: `${this.getOrganizerStart("h:mma")} - ${this.getOrganizerEnd( "h:mma" )}, ${this.calEvent.organizer.language.translate( diff --git a/packages/emails/templates/organizer-scheduled-email.ts b/packages/emails/templates/organizer-scheduled-email.ts index 0646ddfd16..cf6eebd1a1 100644 --- a/packages/emails/templates/organizer-scheduled-email.ts +++ b/packages/emails/templates/organizer-scheduled-email.ts @@ -38,10 +38,7 @@ export default class OrganizerScheduledEmail extends BaseEmail { .map((v, i) => (i === 1 ? v + 1 : v)) as DateArray, startInputType: "utc", productId: "calendso/ics", - title: this.t("ics_event_title", { - eventType: this.calEvent.type, - name: this.calEvent.attendees[0].name, - }), + title: this.calEvent.title, description: this.getTextBody(), duration: { minutes: dayjs(this.calEvent.endTime).diff(dayjs(this.calEvent.startTime), "minute") }, organizer: { name: this.calEvent.organizer.name, email: this.calEvent.organizer.email }, @@ -69,13 +66,6 @@ export default class OrganizerScheduledEmail extends BaseEmail { }); } - let subject; - if (this.newSeat) { - subject = "new_seat_subject"; - } else { - subject = "confirmed_event_type_subject"; - } - return { icalEvent: { filename: "event.ics", @@ -83,11 +73,7 @@ export default class OrganizerScheduledEmail extends BaseEmail { }, from: `${APP_NAME} <${this.getMailerOptions().from}>`, to: toAddresses.join(","), - subject: `${this.t(subject, { - eventType: this.calEvent.type, - name: this.calEvent.attendees[0].name, - date: this.getFormattedDate(), - })}`, + subject: `${this.newSeat ? this.t("new_attendee") + ":" : ""} ${this.calEvent.title}`, html: renderEmail("OrganizerScheduledEmail", { calEvent: this.calEvent, attendee: this.calEvent.organizer,