summaryrefslogtreecommitdiff
path: root/src/routes
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/event.ts146
-rw-r--r--src/routes/group.ts22
-rw-r--r--src/routes/magicLink.ts14
3 files changed, 85 insertions, 97 deletions
diff --git a/src/routes/event.ts b/src/routes/event.ts
index f97adc9..ee45d96 100644
--- a/src/routes/event.ts
+++ b/src/routes/event.ts
@@ -22,14 +22,13 @@ import {
updateActivityPubActor,
updateActivityPubEvent,
} from "../activitypub.js";
-import { sendEmailFromTemplate } from "../lib/email.js";
import crypto from "crypto";
import ical from "ical";
import { markdownToSanitizedHTML } from "../util/markdown.js";
import { checkMagicLink, getConfigMiddleware } from "../lib/middleware.js";
import { getConfig } from "../lib/config.js";
-const config = getConfig();
+const config = getConfig();
const storage = multer.memoryStorage();
// Accept only JPEG, GIF or PNG images, up to 10MB
@@ -193,21 +192,20 @@ router.post(
const savedEvent = await event.save();
addToLog("createEvent", "success", "Event " + eventID + "created");
// Send email with edit link
- if (eventData.creatorEmail && req.app.locals.sendEmails) {
- sendEmailFromTemplate(
- eventData.creatorEmail,
- "",
- `${eventData.eventName}`,
- "createEvent",
- {
+ if (eventData.creatorEmail) {
+ req.emailService.sendEmailFromTemplate({
+ to: eventData.creatorEmail,
+ subject: eventData.eventName,
+ templateName: "createEvent",
+ templateData: {
eventID,
editToken,
}
- );
+ });
}
// If the event was added to a group, send an email to any group
// subscribers
- if (event.eventGroup && req.app.locals.sendEmails) {
+ if (event.eventGroup) {
try {
const eventGroup = await EventGroup.findOne({
_id: event.eventGroup.toString(),
@@ -227,19 +225,18 @@ router.post(
[] as string[],
);
subscribers?.forEach((emailAddress) => {
- sendEmailFromTemplate(
- emailAddress,
- "",
- `New event in ${eventGroup.name}`,
- "eventGroupUpdated",
- {
+ req.emailService.sendEmailFromTemplate({
+ to: emailAddress,
+ subject: `New event in ${eventGroup.name}`,
+ templateName: "eventGroupUpdated",
+ templateData: {
eventGroupName: eventGroup.name,
eventName: event.name,
eventID: event.id,
eventGroupID: eventGroup.id,
emailAddress: encodeURIComponent(emailAddress),
}
- );
+ });
});
} catch (err) {
console.error(err);
@@ -247,7 +244,7 @@ router.post(
"createEvent",
"error",
"Attempt to send event group emails failed with error: " +
- err,
+ err,
);
}
}
@@ -379,24 +376,24 @@ router.put(
eventGroup: isPartOfEventGroup ? eventGroup?._id : null,
activityPubActor: event.activityPubActor
? updateActivityPubActor(
- JSON.parse(event.activityPubActor),
- eventData.eventDescription,
- eventData.eventName,
- eventData.eventLocation,
- eventImageFilename,
- startUTC,
- endUTC,
- eventData.timezone,
- )
+ JSON.parse(event.activityPubActor),
+ eventData.eventDescription,
+ eventData.eventName,
+ eventData.eventLocation,
+ eventImageFilename,
+ startUTC,
+ endUTC,
+ eventData.timezone,
+ )
: undefined,
activityPubEvent: event.activityPubEvent
? updateActivityPubEvent(
- JSON.parse(event.activityPubEvent),
- eventData.eventName,
- startUTC,
- endUTC,
- eventData.timezone,
- )
+ JSON.parse(event.activityPubEvent),
+ eventData.eventName,
+ startUTC,
+ endUTC,
+ eventData.timezone,
+ )
: undefined,
};
let diffText =
@@ -483,22 +480,20 @@ router.put(
}
}
// Send update to all attendees
- if (req.app.locals.sendEmails) {
- const attendeeEmails = event.attendees
- ?.filter((o) => o.status === "attending" && o.email)
- .map((o) => o.email!);
- if (attendeeEmails?.length) {
- sendEmailFromTemplate(
- config.general.email,
- attendeeEmails,
- `${event.name} was just edited`,
- "editEvent",
- {
- diffText,
- eventID: req.params.eventID,
- },
- );
- }
+ const attendeeEmails = event.attendees
+ ?.filter((o) => o.status === "attending" && o.email)
+ .map((o) => o.email!);
+ if (attendeeEmails?.length) {
+ req.emailService.sendEmailFromTemplate({
+ to: config.general.email,
+ bcc: attendeeEmails,
+ subject: `${event.name} was just edited`,
+ templateName: "editEvent",
+ templateData: {
+ diffText,
+ eventID: req.params.eventID,
+ },
+ });
}
res.sendStatus(200);
} catch (err) {
@@ -507,9 +502,9 @@ router.put(
"editEvent",
"error",
"Attempt to edit event " +
- req.params.eventID +
- " failed with error: " +
- err,
+ req.params.eventID +
+ " failed with error: " +
+ err,
);
return res.status(500).json({
errors: [
@@ -598,17 +593,16 @@ router.post(
await event.save();
addToLog("createEvent", "success", `Event ${eventID} created`);
// Send email with edit link
- if (creatorEmail && req.app.locals.sendEmails) {
- sendEmailFromTemplate(
- creatorEmail,
- "",
- `${importedEventData.summary}`,
- "createEvent",
- {
+ if (creatorEmail) {
+ req.emailService.sendEmailFromTemplate({
+ to: creatorEmail,
+ subject: importedEventData.summary || "",
+ templateName: "createEvent",
+ templateData: {
eventID,
editToken,
},
- );
+ });
}
return res.json({
eventID: eventID,
@@ -675,16 +669,15 @@ router.delete(
"success",
`Attendee removed self from event ${req.params.eventID}`,
);
- if (attendeeEmail && req.app.locals.sendEmails) {
- await sendEmailFromTemplate(
- attendeeEmail,
- "",
- "You have been removed from an event",
- "unattendEvent",
- {
+ if (attendeeEmail) {
+ await req.emailService.sendEmailFromTemplate({
+ to: attendeeEmail,
+ subject: "You have been removed from an event",
+ templateName: "unattendEvent",
+ templateData: {
eventID: req.params.eventID,
},
- );
+ });
}
res.sendStatus(200);
} catch (e) {
@@ -723,16 +716,15 @@ router.get(
);
await event.save();
// Send email to the attendee
- if (req.app.locals.sendEmails && attendee.email) {
- sendEmailFromTemplate(
- attendee.email,
- "",
- `You have been removed from ${event.name}`,
- "unattendEvent",
- {
+ if (attendee.email) {
+ req.emailService.sendEmailFromTemplate({
+ to: attendee.email,
+ subject: `You have been removed from ${event.name}`,
+ templateName: "unattendEvent",
+ templateData: {
event,
},
- );
+ });
}
return res.redirect(`/${req.params.eventID}?m=unattend`);
},
diff --git a/src/routes/group.ts b/src/routes/group.ts
index c63413e..cc53976 100644
--- a/src/routes/group.ts
+++ b/src/routes/group.ts
@@ -5,7 +5,6 @@ import { validateGroupData } from "../util/validation.js";
import Jimp from "jimp";
import { addToLog } from "../helpers.js";
import EventGroup from "../models/EventGroup.js";
-import { sendEmailFromTemplate } from "../lib/email.js";
import { marked } from "marked";
import { renderPlain } from "../util/markdown.js";
import { checkMagicLink, getConfigMiddleware } from "../lib/middleware.js";
@@ -92,17 +91,16 @@ router.post(
);
// Send email with edit link
- if (groupData.creatorEmail && req.app.locals.sendEmails) {
- sendEmailFromTemplate(
- groupData.creatorEmail,
- "",
- `${eventGroup.name}`,
- "createEventGroup",
- {
+ if (groupData.creatorEmail) {
+ req.emailService.sendEmailFromTemplate({
+ to: groupData.creatorEmail,
+ subject: eventGroup.name,
+ templateName: "createEventGroup",
+ templateData: {
eventGroupID: eventGroup.id,
editToken: eventGroup.editToken,
},
- );
+ });
}
res.status(200).json({
@@ -224,9 +222,9 @@ router.put(
"editEventGroup",
"error",
"Attempt to edit event group " +
- req.params.eventGroupID +
- " failed with error: " +
- err,
+ req.params.eventGroupID +
+ " failed with error: " +
+ err,
);
return res.status(500).json({
errors: [
diff --git a/src/routes/magicLink.ts b/src/routes/magicLink.ts
index 8d0f147..e0a6310 100644
--- a/src/routes/magicLink.ts
+++ b/src/routes/magicLink.ts
@@ -1,6 +1,5 @@
import { Router, Request, Response } from "express";
import { frontendConfig } from "../lib/config.js";
-import { sendEmailFromTemplate } from "../lib/email.js";
import { generateMagicLinkToken } from "../util/generator.js";
import MagicLink from "../models/MagicLink.js";
import { getConfigMiddleware } from "../lib/middleware.js";
@@ -48,15 +47,14 @@ router.post("/magic-link/event/create", async (req: Request, res: Response) => {
// Take this opportunity to delete any expired magic links
await MagicLink.deleteMany({ expiryTime: { $lt: new Date() } });
- sendEmailFromTemplate(
- email,
- "",
- `Magic link to create an event`,
- "createEventMagicLink",
- {
+ req.emailService.sendEmailFromTemplate({
+ to: email,
+ subject: "Magic link to create an event",
+ templateName: "createEventMagicLink",
+ templateData: {
token
},
- );
+ });
res.render("createEventMagicLink", {
...frontendConfig(res),
message: {