diff options
| author | Gavin Mogan <git@gavinmogan.com> | 2025-04-23 17:27:55 -0700 | 
|---|---|---|
| committer | Gavin Mogan <git@gavinmogan.com> | 2025-04-23 17:43:37 -0700 | 
| commit | a8a17443c2d070d2d23920ffff7e4a43c905698c (patch) | |
| tree | cddb37a6af4a65f774863e51be941cd291af5683 /src/routes | |
| parent | aace2c7e6ccb6e74df83faac74c427d43bfaf79b (diff) | |
Refactor for everywhere to use sendEmailFromTemplate everywhere
* Created a singleton to house handlebars so req doesn't need to be
  passed everywhere (should make unit testing easier later)
* Subjectline for sendgrid and nodemailer are both always prefixed in
  sendEmail()
* removed prefix subjectline from all other email places
* added a couple if (!event) { return 404 } to help make typescript
  happy
* some minor eslint auto fixes (looks like let => const where it can)
Diffstat (limited to 'src/routes')
| -rw-r--r-- | src/routes/event.ts | 51 | ||||
| -rw-r--r-- | src/routes/group.ts | 6 | ||||
| -rw-r--r-- | src/routes/magicLink.ts | 6 | 
3 files changed, 15 insertions, 48 deletions
diff --git a/src/routes/event.ts b/src/routes/event.ts index de5cb4c..f97adc9 100644 --- a/src/routes/event.ts +++ b/src/routes/event.ts @@ -80,8 +80,8 @@ router.post(              });          } -        let eventID = generateEventID(); -        let editToken = generateEditToken(); +        const eventID = generateEventID(); +        const editToken = generateEditToken();          let eventImageFilename;          let isPartOfEventGroup = false; @@ -125,7 +125,7 @@ router.post(          }          // generate RSA keypair for ActivityPub -        let { publicKey, privateKey } = generateRSAKeypair(); +        const { publicKey, privateKey } = generateRSAKeypair();          const event = new Event({              id: eventID, @@ -202,11 +202,7 @@ router.post(                      {                          eventID,                          editToken, -                        siteName: res.locals.config?.general.site_name, -                        siteLogo: res.locals.config?.general.email_logo_url, -                        domain: res.locals.config?.general.domain, -                    }, -                    req, +                    }                  );              }              // If the event was added to a group, send an email to any group @@ -237,17 +233,12 @@ router.post(                              `New event in ${eventGroup.name}`,                              "eventGroupUpdated",                              { -                                siteName: res.locals.config?.general.site_name, -                                siteLogo: -                                    res.locals.config?.general.email_logo_url, -                                domain: res.locals.config?.general.domain,                                  eventGroupName: eventGroup.name,                                  eventName: event.name,                                  eventID: event.id,                                  eventGroupID: eventGroup.id,                                  emailAddress: encodeURIComponent(emailAddress), -                            }, -                            req, +                            }                          );                      });                  } catch (err) { @@ -332,7 +323,7 @@ router.put(              }              // Token matches              // If there is a new image, upload that first -            let eventID = req.params.eventID; +            const eventID = req.params.eventID;              let eventImageFilename = event.image;              if (req.file?.buffer) {                  Jimp.read(req.file.buffer) @@ -452,7 +443,7 @@ router.put(                  "Event " + req.params.eventID + " edited",              );              // send update to ActivityPub subscribers -            let attendees = updatedEventObject.attendees?.filter((el) => el.id); +            const attendees = updatedEventObject.attendees?.filter((el) => el.id);              // broadcast an identical message to all followers, will show in home timeline              const guidObject = crypto.randomBytes(16).toString("hex");              const jsonObject = { @@ -495,21 +486,17 @@ router.put(              if (req.app.locals.sendEmails) {                  const attendeeEmails = event.attendees                      ?.filter((o) => o.status === "attending" && o.email) -                    .map((o) => o.email); +                    .map((o) => o.email!);                  if (attendeeEmails?.length) {                      sendEmailFromTemplate(                          config.general.email, -                        attendeeEmails.join(","), +                        attendeeEmails,                          `${event.name} was just edited`,                          "editEvent",                          {                              diffText,                              eventID: req.params.eventID, -                            siteName: res.locals.config?.general.site_name, -                            siteLogo: res.locals.config?.general.email_logo_url, -                            domain: res.locals.config?.general.domain,                          }, -                        req,                      );                  }              } @@ -550,12 +537,12 @@ router.post(              });          } -        let eventID = generateEventID(); -        let editToken = generateEditToken(); +        const eventID = generateEventID(); +        const editToken = generateEditToken(); -        let iCalObject = ical.parseICS(req.file.buffer.toString("utf8")); +        const iCalObject = ical.parseICS(req.file.buffer.toString("utf8")); -        let importedEventData = iCalObject[Object.keys(iCalObject)[0]]; +        const importedEventData = iCalObject[Object.keys(iCalObject)[0]];          let creatorEmail: string | undefined;          if (req.body.creatorEmail) { @@ -620,11 +607,7 @@ router.post(                      {                          eventID,                          editToken, -                        siteName: res.locals.config?.general.site_name, -                        siteLogo: res.locals.config?.general.email_logo_url, -                        domain: res.locals.config?.general.domain,                      }, -                    req,                  );              }              return res.json({ @@ -700,11 +683,7 @@ router.delete(                      "unattendEvent",                      {                          eventID: req.params.eventID, -                        siteName: res.locals.config?.general.site_name, -                        siteLogo: res.locals.config?.general.email_logo_url, -                        domain: res.locals.config?.general.domain,                      }, -                    req,                  );              }              res.sendStatus(200); @@ -752,11 +731,7 @@ router.get(                  "unattendEvent",                  {                      event, -                    siteName: res.locals.config?.general.site_name, -                    siteLogo: res.locals.config?.general.email_logo_url, -                    domain: res.locals.config?.general.domain,                  }, -                req,              );          }          return res.redirect(`/${req.params.eventID}?m=unattend`); diff --git a/src/routes/group.ts b/src/routes/group.ts index 9f4105c..c63413e 100644 --- a/src/routes/group.ts +++ b/src/routes/group.ts @@ -101,11 +101,7 @@ router.post(                      {                          eventGroupID: eventGroup.id,                          editToken: eventGroup.editToken, -                        siteName: res.locals.config?.general.site_name, -                        siteLogo: res.locals.config?.general.email_logo_url, -                        domain: res.locals.config?.general.domain,                      }, -                    req,                  );              } @@ -182,7 +178,7 @@ router.put(              }              // Token matches              // If there is a new image, upload that first -            let eventGroupID = req.params.eventGroupID; +            const eventGroupID = req.params.eventGroupID;              let eventGroupImageFilename = eventGroup.image;              if (req.file?.buffer) {                  Jimp.read(req.file.buffer) diff --git a/src/routes/magicLink.ts b/src/routes/magicLink.ts index b4afca6..8d0f147 100644 --- a/src/routes/magicLink.ts +++ b/src/routes/magicLink.ts @@ -54,12 +54,8 @@ router.post("/magic-link/event/create", async (req: Request, res: Response) => {          `Magic link to create an event`,          "createEventMagicLink",          { -            token, -            siteName: res.locals.config?.general.site_name, -            siteLogo: res.locals.config?.general.email_logo_url, -            domain: res.locals.config?.general.domain, +            token          }, -        req,      );      res.render("createEventMagicLink", {          ...frontendConfig(res),  | 
