diff options
| author | quietreading <team@quietreading.org> | 2025-07-07 17:00:11 -0400 | 
|---|---|---|
| committer | quietreading <team@quietreading.org> | 2025-07-07 17:00:11 -0400 | 
| commit | 73c5cffabbb8b36d877811c4d1b56abf6939bda5 (patch) | |
| tree | c8e67da60cace70f1621647decb2e1df7989b2f5 /src/routes | |
| parent | da7c011e1e2336f99e58af76971500b8940eb35d (diff) | |
edits
Diffstat (limited to 'src/routes')
| -rw-r--r-- | src/routes/event.ts | 2 | ||||
| -rw-r--r-- | src/routes/frontend.ts | 130 | 
2 files changed, 71 insertions, 61 deletions
diff --git a/src/routes/event.ts b/src/routes/event.ts index 84a7c6b..5b12374 100644 --- a/src/routes/event.ts +++ b/src/routes/event.ts @@ -193,6 +193,7 @@ router.post(              const savedEvent = await event.save();              addToLog("createEvent", "success", "Event " + eventID + "created");              // Send email with edit link +            var duplicateParams = new URLSearchParams(eventData).toString();              if (eventData.creatorEmail) {                  req.emailService.sendEmailFromTemplate({                      to: eventData.creatorEmail, @@ -201,6 +202,7 @@ router.post(                      templateData: {                          eventID,                          editToken, +                        duplicateParams                      }                  });              } diff --git a/src/routes/frontend.ts b/src/routes/frontend.ts index fca14c6..0f46098 100644 --- a/src/routes/frontend.ts +++ b/src/routes/frontend.ts @@ -25,64 +25,7 @@ const router = Router();  // Add config middleware to all routes  router.use(getConfigMiddleware); -router.get("/", (_, res) => { -    if (res.locals.config?.general.show_public_event_list) { -        return res.redirect("/events"); -    } -    return res.render("home", { -        ...frontendConfig(res), -        instanceRules: instanceRules(), -        instanceDescription: instanceDescription(), -    }); -}); - -router.get("/about", (_: Request, res: Response) => { -    return res.render("home", { -        ...frontendConfig(res), -        instanceRules: instanceRules(), -        instanceDescription: instanceDescription(), -    }); -}); - -router.get("/new", (_: Request, res: Response) => { -    if (res.locals.config?.general.creator_email_addresses?.length) { -        return res.render("createEventMagicLink", frontendConfig(res)); -    } -    return res.render("newevent", { -        title: i18next.t("frontend.newevent"), -        ...frontendConfig(res), -    }); -}); - -router.get("/new/:magicLinkToken", async (req: Request, res: Response) => { -    // If we don't have any creator email addresses, we don't need to check the magic link -    // so we can just redirect to the new event page -    if (!res.locals.config?.general.creator_email_addresses?.length) { -        return res.redirect("/new"); -    } -    const magicLink = await MagicLink.findOne({ -        token: req.params.magicLinkToken, -        expiryTime: { $gt: new Date() }, -        permittedActions: "createEvent", -    }); -    if (!magicLink) { -        return res.render("createEventMagicLink", { -            ...frontendConfig(res), -            message: { -                type: "danger", -                text: i18next.t("routes.magiclink-invalid"), -            }, -        }); -    } -    res.render("newevent", { -        title: i18next.t("frontend.newevent"), -        ...frontendConfig(res), -        magicLinkToken: req.params.magicLinkToken, -        creatorEmail: magicLink.email, -    }); -}); - -router.get("/events", async (_: Request, res: Response) => { +const evtrun = async (_: Request, res: Response) => {      if (!res.locals.config?.general.show_public_event_list) {          return res.status(404).render("404", frontendConfig(res));      } @@ -93,21 +36,26 @@ router.get("/events", async (_: Request, res: Response) => {      const updatedEvents: EventListEvent[] = events.map((event) => {          const startMoment = moment.tz(event.start, event.timezone);          const endMoment = moment.tz(event.end, event.timezone); +        let eventStartISO = moment.tz(event.start, "Etc/UTC").toISOString(); +        let eventEndISO = moment.tz(event.end, "Etc/UTC").toISOString();          const isSameDay = startMoment.isSame(endMoment, "day"); +		const calfmt = 'dddd, MMMM D ยท h:mma'          return {              id: event.id,              name: event.name,              location: event.location,              displayDate: isSameDay -                ? startMoment.format("LL") -                : `${startMoment.format("LL")} - ${endMoment.format( -                      "LL", +                ? startMoment.format(calfmt) +                : `${startMoment.format(calfmt)} - ${endMoment.format( +                      calfmt,                    )}`,              eventHasConcluded: endMoment.isBefore(moment.tz(event.timezone)),              eventGroup: event.eventGroup as any as IEventGroup,              startMoment,              endMoment, +            eventStartISO, +            eventEndISO,          };      });      const upcomingEventsInMonthBuckets = updatedEvents @@ -140,8 +88,68 @@ router.get("/events", async (_: Request, res: Response) => {          instanceRules: instanceRules(),          ...frontendConfig(res),      }); +} + +router.get("/", evtrun); +// router.get("/", (_, res) => { +//     if (res.locals.config?.general.show_public_event_list) { +//         return evt(); +//     } +//     return res.render("home", { +//         ...frontendConfig(res), +//         instanceRules: instanceRules(), +//         instanceDescription: instanceDescription(), +//     }); +// }); + +router.get("/about", (_: Request, res: Response) => { +    return res.render("home", { +        ...frontendConfig(res), +        instanceRules: instanceRules(), +        instanceDescription: instanceDescription(), +    }); +}); + +router.get("/new", (_: Request, res: Response) => { +    if (res.locals.config?.general.creator_email_addresses?.length) { +        return res.render("createEventMagicLink", frontendConfig(res)); +    } +    return res.render("newevent", { +        title: i18next.t("frontend.newevent"), +        ...frontendConfig(res), +    });  }); +router.get("/new/:magicLinkToken", async (req: Request, res: Response) => { +    // If we don't have any creator email addresses, we don't need to check the magic link +    // so we can just redirect to the new event page +    if (!res.locals.config?.general.creator_email_addresses?.length) { +        return res.redirect("/new"); +    } +    const magicLink = await MagicLink.findOne({ +        token: req.params.magicLinkToken, +        expiryTime: { $gt: new Date() }, +        permittedActions: "createEvent", +    }); +    if (!magicLink) { +        return res.render("createEventMagicLink", { +            ...frontendConfig(res), +            message: { +                type: "danger", +                text: i18next.t("routes.magiclink-invalid"), +            }, +        }); +    } +    res.render("newevent", { +        title: i18next.t("frontend.newevent"), +        ...frontendConfig(res), +        magicLinkToken: req.params.magicLinkToken, +        creatorEmail: magicLink.email, +    }); +}); + +// router.get("/events", evt); +  router.get("/:eventID", async (req: Request, res: Response) => {      try {          const event = await Event.findOne({  | 
