diff options
author | Raphael Kabo <raphaelkabo@hey.com> | 2023-10-07 18:48:08 +0100 |
---|---|---|
committer | Raphael Kabo <raphaelkabo@hey.com> | 2023-10-07 18:48:08 +0100 |
commit | b8e424a8602b586bbf346cd27171ede570a54973 (patch) | |
tree | 84851929950e5574c4293bd19296a75d08b012a0 /src/routes.js | |
parent | d584ed85660a91433fffd5e2b0bfa9114114ea37 (diff) |
refactor: frontend event group routes
Diffstat (limited to 'src/routes.js')
-rwxr-xr-x | src/routes.js | 239 |
1 files changed, 1 insertions, 238 deletions
diff --git a/src/routes.js b/src/routes.js index 94b7477..e4ef3cb 100755 --- a/src/routes.js +++ b/src/routes.js @@ -3,9 +3,8 @@ import express from "express"; import { customAlphabet } from "nanoid"; import randomstring from "randomstring"; import { getConfig } from "./lib/config.js"; -import { addToLog, exportIcal } from "./helpers.js"; +import { addToLog } from "./helpers.js"; import moment from "moment-timezone"; -import { marked } from "marked"; import crypto from "crypto"; import request from "request"; import niceware from "niceware"; @@ -23,7 +22,6 @@ import { import Event from "./models/Event.js"; import EventGroup from "./models/EventGroup.js"; import path from "path"; -import { renderPlain } from "./util/markdown.js"; const config = getConfig(); const domain = config.general.domain; @@ -184,241 +182,6 @@ schedule.scheduleJob("59 23 * * *", function (fireDate) { // old (they're not going to become active) }); -router.get("/group/:eventGroupID", (req, res) => { - EventGroup.findOne({ - id: req.params.eventGroupID, - }) - .lean() // Required, see: https://stackoverflow.com/questions/59690923/handlebars-access-has-been-denied-to-resolve-the-property-from-because-it-is - .then(async (eventGroup) => { - if (eventGroup) { - let parsedDescription = marked.parse(eventGroup.description); - let eventGroupEditToken = eventGroup.editToken; - - let escapedName = eventGroup.name.replace(/\s+/g, "+"); - - let eventGroupHasCoverImage = false; - if (eventGroup.image) { - eventGroupHasCoverImage = true; - } else { - eventGroupHasCoverImage = false; - } - let eventGroupHasHost = false; - if (eventGroup.hostName) { - eventGroupHasHost = true; - } else { - eventGroupHasHost = false; - } - - let events = await Event.find({ eventGroup: eventGroup._id }) - .lean() - .sort("start"); - - events.map((event) => { - if ( - moment - .tz(event.end, event.timezone) - .isSame(event.start, "day") - ) { - // Happening during one day - event.displayDate = moment - .tz(event.start, event.timezone) - .format("D MMM YYYY"); - } else { - event.displayDate = - moment - .tz(event.start, event.timezone) - .format("D MMM YYYY") + - moment - .tz(event.end, event.timezone) - .format(" - D MMM YYYY"); - } - if ( - moment - .tz(event.end, event.timezone) - .isBefore(moment.tz(event.timezone)) - ) { - event.eventHasConcluded = true; - } else { - event.eventHasConcluded = false; - } - return (({ id, name, displayDate, eventHasConcluded }) => ({ - id, - name, - displayDate, - eventHasConcluded, - }))(event); - }); - - let upcomingEventsExist = false; - if (events.some((e) => e.eventHasConcluded === false)) { - upcomingEventsExist = true; - } - - let firstLoad = false; - if (eventGroup.firstLoad === true) { - firstLoad = true; - EventGroup.findOneAndUpdate( - { id: req.params.eventGroupID }, - { firstLoad: false }, - function (err, raw) { - if (err) { - res.send(err); - } - }, - ); - } - let editingEnabled = false; - if (Object.keys(req.query).length !== 0) { - if (!req.query.e) { - editingEnabled = false; - console.log("No edit token set"); - } else { - if (req.query.e === eventGroupEditToken) { - editingEnabled = true; - } else { - editingEnabled = false; - } - } - } - let metadata = { - title: eventGroup.name, - description: marked - .parse(eventGroup.description, { - renderer: renderPlain(), - }) - .split(" ") - .splice(0, 40) - .join(" ") - .trim(), - image: eventGroupHasCoverImage - ? `https://${domain}/events/` + eventGroup.image - : null, - url: `https://${domain}/` + req.params.eventID, - }; - res.set("X-Robots-Tag", "noindex"); - res.render("eventgroup", { - domain: domain, - title: eventGroup.name, - eventGroupData: eventGroup, - escapedName: escapedName, - events: events, - upcomingEventsExist: upcomingEventsExist, - parsedDescription: parsedDescription, - editingEnabled: editingEnabled, - eventGroupHasCoverImage: eventGroupHasCoverImage, - eventGroupHasHost: eventGroupHasHost, - firstLoad: firstLoad, - metadata: metadata, - }); - } else { - res.status(404); - res.render("404", { url: req.url }); - } - }) - .catch((err) => { - addToLog( - "displayEventGroup", - "error", - "Attempt to display event group " + - req.params.eventGroupID + - " failed with error: " + - err, - ); - console.log(err); - res.status(404); - res.render("404", { url: req.url }); - return; - }); -}); - -router.get("/group/:eventGroupID/feed.ics", (req, res) => { - EventGroup.findOne({ - id: req.params.eventGroupID, - }) - .lean() // Required, see: https://stackoverflow.com/questions/59690923/handlebars-access-has-been-denied-to-resolve-the-property-from-because-it-is - .then(async (eventGroup) => { - if (eventGroup) { - let events = await Event.find({ eventGroup: eventGroup._id }) - .lean() - .sort("start"); - const string = exportIcal(events, eventGroup.name); - res.set("Content-Type", "text/calendar"); - return res.send(string); - } - }) - .catch((err) => { - addToLog( - "eventGroupFeed", - "error", - "Attempt to display event group feed for " + - req.params.eventGroupID + - " failed with error: " + - err, - ); - console.log(err); - res.status(404); - res.render("404", { url: req.url }); - return; - }); -}); - -router.get("/exportevent/:eventID", (req, res) => { - Event.findOne({ - id: req.params.eventID, - }) - .populate("eventGroup") - .then((event) => { - if (event) { - const string = exportIcal([event]); - res.send(string); - } - }) - .catch((err) => { - addToLog( - "exportEvent", - "error", - "Attempt to export event " + - req.params.eventID + - " failed with error: " + - err, - ); - console.log(err); - res.status(404); - res.render("404", { url: req.url }); - return; - }); -}); - -router.get("/exportgroup/:eventGroupID", (req, res) => { - EventGroup.findOne({ - id: req.params.eventGroupID, - }) - .lean() // Required, see: https://stackoverflow.com/questions/59690923/handlebars-access-has-been-denied-to-resolve-the-property-from-because-it-is - .then(async (eventGroup) => { - if (eventGroup) { - let events = await Event.find({ eventGroup: eventGroup._id }) - .lean() - .sort("start"); - const string = exportIcal(events); - res.send(string); - } - }) - .catch((err) => { - addToLog( - "exportEvent", - "error", - "Attempt to export event group " + - req.params.eventGroupID + - " failed with error: " + - err, - ); - console.log(err); - res.status(404); - res.render("404", { url: req.url }); - return; - }); -}); - // BACKEND ROUTES router.post("/importevent", (req, res) => { let eventID = nanoid(); |