Co-authored-by: Bailey Pumfleet <pumfleet@hey.com>
This commit is contained in:
parent
a9a6d69ba6
commit
aff45e3451
3 changed files with 33 additions and 33 deletions
|
@ -1,6 +1,5 @@
|
|||
import EventOrganizerMail from "./emails/EventOrganizerMail";
|
||||
import EventOrganizerRescheduledMail from "./emails/EventOrganizerRescheduledMail";
|
||||
import EventAttendeeRescheduledMail from "./emails/EventAttendeeRescheduledMail";
|
||||
import prisma from "./prisma";
|
||||
import { Credential } from "@prisma/client";
|
||||
import CalEventParser from "./CalEventParser";
|
||||
|
@ -616,20 +615,11 @@ const updateEvent = async (
|
|||
|
||||
if (!noMail) {
|
||||
const organizerMail = new EventOrganizerRescheduledMail(calEvent, newUid);
|
||||
const attendeeMail = new EventAttendeeRescheduledMail(calEvent, newUid);
|
||||
try {
|
||||
await organizerMail.sendEmail();
|
||||
} catch (e) {
|
||||
console.error("organizerMail.sendEmail failed", e);
|
||||
}
|
||||
|
||||
if (!updateResult || !updateResult.disableConfirmationEmail) {
|
||||
try {
|
||||
await attendeeMail.sendEmail();
|
||||
} catch (e) {
|
||||
console.error("attendeeMail.sendEmail failed", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
|
|
|
@ -7,6 +7,7 @@ import { LocationType } from "@lib/location";
|
|||
import { v5 as uuidv5 } from "uuid";
|
||||
import merge from "lodash.merge";
|
||||
import EventAttendeeMail from "@lib/emails/EventAttendeeMail";
|
||||
import EventAttendeeRescheduledMail from "@lib/emails/EventAttendeeRescheduledMail";
|
||||
|
||||
export interface EventResult {
|
||||
type: string;
|
||||
|
@ -70,21 +71,7 @@ export default class EventManager {
|
|||
if (isDedicated) {
|
||||
results.push(await this.createVideoEvent(event, maybeUid));
|
||||
} else {
|
||||
if (!results.length || !results.some((eRes) => eRes.createdEvent.disableConfirmationEmail)) {
|
||||
const metadata: { hangoutLink?: string; conferenceData?: unknown; entryPoints?: unknown } = {};
|
||||
if (results.length) {
|
||||
// TODO: Handle created event metadata more elegantly
|
||||
metadata.hangoutLink = results[0].createdEvent?.hangoutLink;
|
||||
metadata.conferenceData = results[0].createdEvent?.conferenceData;
|
||||
metadata.entryPoints = results[0].createdEvent?.entryPoints;
|
||||
}
|
||||
const attendeeMail = new EventAttendeeMail(event, maybeUid, metadata);
|
||||
try {
|
||||
await attendeeMail.sendEmail();
|
||||
} catch (e) {
|
||||
console.error("attendeeMail.sendEmail failed", e);
|
||||
}
|
||||
}
|
||||
await this.sendAttendeeMail("new", results, event, maybeUid);
|
||||
}
|
||||
|
||||
const referencesToCreate: Array<PartialReference> = results.map((result) => {
|
||||
|
@ -135,6 +122,8 @@ export default class EventManager {
|
|||
// If and only if event type is a dedicated meeting, update the dedicated video meeting as well.
|
||||
if (isDedicated) {
|
||||
results.push(await this.updateVideoEvent(event, booking));
|
||||
} else {
|
||||
await this.sendAttendeeMail("reschedule", results, event, rescheduleUid);
|
||||
}
|
||||
|
||||
// Now we can delete the old booking and its references.
|
||||
|
@ -319,4 +308,33 @@ export default class EventManager {
|
|||
|
||||
return event;
|
||||
}
|
||||
|
||||
private async sendAttendeeMail(type: "new" | "reschedule", results, event, maybeUid) {
|
||||
if (
|
||||
!results.length ||
|
||||
!results.some((eRes) => (eRes.createdEvent || eRes.updatedEvent).disableConfirmationEmail)
|
||||
) {
|
||||
const metadata: { hangoutLink?: string; conferenceData?: unknown; entryPoints?: unknown } = {};
|
||||
if (results.length) {
|
||||
// TODO: Handle created event metadata more elegantly
|
||||
metadata.hangoutLink = results[0].createdEvent?.hangoutLink;
|
||||
metadata.conferenceData = results[0].createdEvent?.conferenceData;
|
||||
metadata.entryPoints = results[0].createdEvent?.entryPoints;
|
||||
}
|
||||
let attendeeMail;
|
||||
switch (type) {
|
||||
case "reschedule":
|
||||
attendeeMail = new EventAttendeeRescheduledMail(event, maybeUid, metadata);
|
||||
break;
|
||||
case "new":
|
||||
attendeeMail = new EventAttendeeMail(event, maybeUid, metadata);
|
||||
break;
|
||||
}
|
||||
try {
|
||||
await attendeeMail.sendEmail();
|
||||
} catch (e) {
|
||||
console.error("attendeeMail.sendEmail failed", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import type { NextApiRequest, NextApiResponse } from "next";
|
||||
import { getSession } from "@lib/auth";
|
||||
import prisma from "../../../lib/prisma";
|
||||
import { handleLegacyConfirmationMail } from "./[user]";
|
||||
import { CalendarEvent } from "@lib/calendarClient";
|
||||
import EventRejectionMail from "@lib/emails/EventRejectionMail";
|
||||
import EventManager from "@lib/events/EventManager";
|
||||
|
@ -71,13 +70,6 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
|||
const eventManager = new EventManager(currentUser.credentials);
|
||||
const scheduleResult = await eventManager.create(evt, booking.uid);
|
||||
|
||||
await handleLegacyConfirmationMail(
|
||||
scheduleResult.results,
|
||||
{ requiresConfirmation: false },
|
||||
evt,
|
||||
booking.uid
|
||||
);
|
||||
|
||||
await prisma.booking.update({
|
||||
where: {
|
||||
id: bookingId,
|
||||
|
|
Loading…
Reference in a new issue