summaryrefslogtreecommitdiff
path: root/src/routes/frontend.ts
diff options
context:
space:
mode:
authorquietreading <team@quietreading.org>2025-07-07 17:00:11 -0400
committerquietreading <team@quietreading.org>2025-07-07 17:00:11 -0400
commit73c5cffabbb8b36d877811c4d1b56abf6939bda5 (patch)
treec8e67da60cace70f1621647decb2e1df7989b2f5 /src/routes/frontend.ts
parentda7c011e1e2336f99e58af76971500b8940eb35d (diff)
edits
Diffstat (limited to 'src/routes/frontend.ts')
-rw-r--r--src/routes/frontend.ts130
1 files changed, 69 insertions, 61 deletions
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({