From f293f8b5c493ea875cbb5aa7468b74ea52eaa70c Mon Sep 17 00:00:00 2001 From: sean-brydon <55134778+sean-brydon@users.noreply.github.com> Date: Thu, 31 Mar 2022 20:57:12 +0100 Subject: [PATCH] Bug - link not showing (#2333) * Bug - link not showing * Added where location as link on emails * Location URL test fixes * URLs validator fixes Co-authored-by: Alan Co-authored-by: zomars --- apps/web/components/booking/pages/BookingPage.tsx | 5 ++++- apps/web/lib/emails/templates/attendee-scheduled-email.ts | 6 +++++- apps/web/lib/emails/templates/organizer-scheduled-email.ts | 5 +++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/apps/web/components/booking/pages/BookingPage.tsx b/apps/web/components/booking/pages/BookingPage.tsx index 063ec6f976..a6e7cd9bb8 100644 --- a/apps/web/components/booking/pages/BookingPage.tsx +++ b/apps/web/components/booking/pages/BookingPage.tsx @@ -114,7 +114,7 @@ const BookingPage = ({ eventType, booking, profile }: BookingPageProps) => { const eventTypeDetail = { isWeb3Active: false, ...eventType }; - type Location = { type: LocationType; address?: string }; + type Location = { type: LocationType; address?: string; link?: string }; // it would be nice if Prisma at some point in the future allowed for Json; as of now this is not the case. const locations: Location[] = useMemo( () => (eventType.locations as Location[]) || [], @@ -201,6 +201,9 @@ const BookingPage = ({ eventType, booking, profile }: BookingPageProps) => { case LocationType.InPerson: { return locationInfo(locationType)?.address || ""; } + case LocationType.Link: { + return locationInfo(locationType)?.link || ""; + } // Catches all other location types, such as Google Meet, Zoom etc. default: return selectedLocation || ""; diff --git a/apps/web/lib/emails/templates/attendee-scheduled-email.ts b/apps/web/lib/emails/templates/attendee-scheduled-email.ts index 67b8a144eb..9f8cd49eb4 100644 --- a/apps/web/lib/emails/templates/attendee-scheduled-email.ts +++ b/apps/web/lib/emails/templates/attendee-scheduled-email.ts @@ -310,12 +310,16 @@ ${getRichDescription(this.calEvent)} protected getLocation(): string { let providerName = this.calEvent.location ? getAppName(this.calEvent.location) : ""; - if (this.calEvent.location && this.calEvent.location.includes("integrations:")) { const location = this.calEvent.location.split(":")[1]; providerName = location[0].toUpperCase() + location.slice(1); } + // If location its a url, probably we should be validating it with a custom library + if (this.calEvent.location && /^https?:\/\//.test(this.calEvent.location)) { + providerName = this.calEvent.location; + } + if (this.calEvent.videoCallData) { const meetingId = this.calEvent.videoCallData.id; const meetingPassword = this.calEvent.videoCallData.password; diff --git a/apps/web/lib/emails/templates/organizer-scheduled-email.ts b/apps/web/lib/emails/templates/organizer-scheduled-email.ts index fe53820f24..2fd3889625 100644 --- a/apps/web/lib/emails/templates/organizer-scheduled-email.ts +++ b/apps/web/lib/emails/templates/organizer-scheduled-email.ts @@ -307,6 +307,11 @@ ${getRichDescription(this.calEvent)} providerName = location[0].toUpperCase() + location.slice(1); } + // If location its a url, probably we should be validating it with a custom library + if (this.calEvent.location && /^https?:\/\//.test(this.calEvent.location)) { + providerName = this.calEvent.location; + } + if (this.calEvent.videoCallData) { const meetingId = this.calEvent.videoCallData.id; const meetingPassword = this.calEvent.videoCallData.password;