summaryrefslogtreecommitdiff
path: root/src/routes.js
diff options
context:
space:
mode:
authorRaphael Kabo <raphaelkabo@hey.com>2023-10-07 18:48:08 +0100
committerRaphael Kabo <raphaelkabo@hey.com>2023-10-07 18:48:08 +0100
commitb8e424a8602b586bbf346cd27171ede570a54973 (patch)
tree84851929950e5574c4293bd19296a75d08b012a0 /src/routes.js
parentd584ed85660a91433fffd5e2b0bfa9114114ea37 (diff)
refactor: frontend event group routes
Diffstat (limited to 'src/routes.js')
-rwxr-xr-xsrc/routes.js239
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();