diff options
| author | Raphael Kabo <raphaelkabo@hey.com> | 2023-10-06 16:25:29 +0100 | 
|---|---|---|
| committer | Raphael Kabo <raphaelkabo@hey.com> | 2023-10-06 16:25:29 +0100 | 
| commit | 2996a4d05d0ea2f8446e2a2a0383979ceec748ae (patch) | |
| tree | aeab360ac4c1aa14f50b638f9b799dad8df55ff8 /src/routes | |
| parent | 115210bfd9a5ae7bb8b516ce0d2cf3d9042dead7 (diff) | |
Run Prettier on all files
Diffstat (limited to 'src/routes')
| -rw-r--r-- | src/routes/frontend.ts | 382 | 
1 files changed, 193 insertions, 189 deletions
diff --git a/src/routes/frontend.ts b/src/routes/frontend.ts index 9dea619..71984ec 100644 --- a/src/routes/frontend.ts +++ b/src/routes/frontend.ts @@ -11,210 +11,214 @@ const config = getConfig();  const router = Router();  router.get("/", (_: Request, res: Response) => { -  res.render("home", frontendConfig()); +    res.render("home", frontendConfig());  });  router.get("/new", (_: Request, res: Response) => { -  res.render("newevent", { -    title: "New event", -    ...frontendConfig(), -  }); +    res.render("newevent", { +        title: "New event", +        ...frontendConfig(), +    });  });  router.get("/:eventID", async (req: Request, res: Response) => { -  try { -    const event = await Event.findOne({ -      id: req.params.eventID, -    }) -      .lean() // Required, see: https://stackoverflow.com/questions/59690923/handlebars-access-has-been-denied-to-resolve-the-property-from-because-it-is -      .populate("eventGroup"); -    if (!event) { -      res.status(404); -      res.render("404", { url: req.url }); -      return; -    } -    const parsedLocation = event.location.replace(/\s+/g, "+"); -    let displayDate; -    if (moment.tz(event.end, event.timezone).isSame(event.start, "day")) { -      // Happening during one day -      displayDate = -        moment -          .tz(event.start, event.timezone) -          .format( -            'dddd D MMMM YYYY [<span class="text-muted">from</span>] h:mm a' -          ) + -        moment -          .tz(event.end, event.timezone) -          .format( -            ' [<span class="text-muted">to</span>] h:mm a [<span class="text-muted">](z)[</span>]' -          ); -    } else { -      displayDate = -        moment -          .tz(event.start, event.timezone) -          .format( -            'dddd D MMMM YYYY [<span class="text-muted">at</span>] h:mm a' -          ) + -        moment -          .tz(event.end, event.timezone) -          .format( -            ' [<span class="text-muted">–</span>] dddd D MMMM YYYY [<span class="text-muted">at</span>] h:mm a [<span class="text-muted">](z)[</span>]' -          ); -    } -    let eventStartISO = moment.tz(event.start, "Etc/UTC").toISOString(); -    let eventEndISO = moment.tz(event.end, "Etc/UTC").toISOString(); -    let parsedStart = moment -      .tz(event.start, event.timezone) -      .format("YYYYMMDD[T]HHmmss"); -    let parsedEnd = moment -      .tz(event.end, event.timezone) -      .format("YYYYMMDD[T]HHmmss"); -    let eventHasConcluded = false; -    if ( -      moment.tz(event.end, event.timezone).isBefore(moment.tz(event.timezone)) -    ) { -      eventHasConcluded = true; -    } -    let eventHasBegun = false; -    if ( -      moment.tz(event.start, event.timezone).isBefore(moment.tz(event.timezone)) -    ) { -      eventHasBegun = true; -    } -    let fromNow = moment.tz(event.start, event.timezone).fromNow(); -    let parsedDescription = marked.parse(event.description); -    let eventEditToken = event.editToken; +    try { +        const event = await Event.findOne({ +            id: req.params.eventID, +        }) +            .lean() // Required, see: https://stackoverflow.com/questions/59690923/handlebars-access-has-been-denied-to-resolve-the-property-from-because-it-is +            .populate("eventGroup"); +        if (!event) { +            res.status(404); +            res.render("404", { url: req.url }); +            return; +        } +        const parsedLocation = event.location.replace(/\s+/g, "+"); +        let displayDate; +        if (moment.tz(event.end, event.timezone).isSame(event.start, "day")) { +            // Happening during one day +            displayDate = +                moment +                    .tz(event.start, event.timezone) +                    .format( +                        'dddd D MMMM YYYY [<span class="text-muted">from</span>] h:mm a', +                    ) + +                moment +                    .tz(event.end, event.timezone) +                    .format( +                        ' [<span class="text-muted">to</span>] h:mm a [<span class="text-muted">](z)[</span>]', +                    ); +        } else { +            displayDate = +                moment +                    .tz(event.start, event.timezone) +                    .format( +                        'dddd D MMMM YYYY [<span class="text-muted">at</span>] h:mm a', +                    ) + +                moment +                    .tz(event.end, event.timezone) +                    .format( +                        ' [<span class="text-muted">–</span>] dddd D MMMM YYYY [<span class="text-muted">at</span>] h:mm a [<span class="text-muted">](z)[</span>]', +                    ); +        } +        let eventStartISO = moment.tz(event.start, "Etc/UTC").toISOString(); +        let eventEndISO = moment.tz(event.end, "Etc/UTC").toISOString(); +        let parsedStart = moment +            .tz(event.start, event.timezone) +            .format("YYYYMMDD[T]HHmmss"); +        let parsedEnd = moment +            .tz(event.end, event.timezone) +            .format("YYYYMMDD[T]HHmmss"); +        let eventHasConcluded = false; +        if ( +            moment +                .tz(event.end, event.timezone) +                .isBefore(moment.tz(event.timezone)) +        ) { +            eventHasConcluded = true; +        } +        let eventHasBegun = false; +        if ( +            moment +                .tz(event.start, event.timezone) +                .isBefore(moment.tz(event.timezone)) +        ) { +            eventHasBegun = true; +        } +        let fromNow = moment.tz(event.start, event.timezone).fromNow(); +        let parsedDescription = marked.parse(event.description); +        let eventEditToken = event.editToken; -    let escapedName = event.name.replace(/\s+/g, "+"); +        let escapedName = event.name.replace(/\s+/g, "+"); -    let eventHasCoverImage = false; -    if (event.image) { -      eventHasCoverImage = true; -    } else { -      eventHasCoverImage = false; -    } -    let eventHasHost = false; -    if (event.hostName) { -      eventHasHost = true; -    } else { -      eventHasHost = false; -    } -    let firstLoad = false; -    if (event.firstLoad === true) { -      firstLoad = true; -      await Event.findOneAndUpdate( -        { id: req.params.eventID }, -        { firstLoad: false } -      ); -    } -    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 === eventEditToken) { -          editingEnabled = true; +        let eventHasCoverImage = false; +        if (event.image) { +            eventHasCoverImage = true;          } else { -          editingEnabled = false; +            eventHasCoverImage = false;          } -      } -    } -    let eventAttendees = event.attendees -      ?.sort((a, b) => (a.name > b.name ? 1 : b.name > a.name ? -1 : 0)) -      .map((el) => { -        if (!el.id) { -          el.id = el._id; +        let eventHasHost = false; +        if (event.hostName) { +            eventHasHost = true; +        } else { +            eventHasHost = false;          } -        if (el.number && el.number > 1) { -          el.name = `${el.name} (${el.number} people)`; +        let firstLoad = false; +        if (event.firstLoad === true) { +            firstLoad = true; +            await Event.findOneAndUpdate( +                { id: req.params.eventID }, +                { firstLoad: false }, +            );          } -        return el; -      }) -      .filter((obj, pos, arr) => { -        return ( -          obj.status === "attending" && -          arr.map((mapObj) => mapObj.id).indexOf(obj.id) === pos -        ); -      }); +        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 === eventEditToken) { +                    editingEnabled = true; +                } else { +                    editingEnabled = false; +                } +            } +        } +        let eventAttendees = event.attendees +            ?.sort((a, b) => (a.name > b.name ? 1 : b.name > a.name ? -1 : 0)) +            .map((el) => { +                if (!el.id) { +                    el.id = el._id; +                } +                if (el.number && el.number > 1) { +                    el.name = `${el.name} (${el.number} people)`; +                } +                return el; +            }) +            .filter((obj, pos, arr) => { +                return ( +                    obj.status === "attending" && +                    arr.map((mapObj) => mapObj.id).indexOf(obj.id) === pos +                ); +            }); -    let spotsRemaining, noMoreSpots; -    let numberOfAttendees = -      eventAttendees?.reduce((acc, attendee) => { -        if (attendee.status === "attending") { -          return acc + (attendee.number || 1); +        let spotsRemaining, noMoreSpots; +        let numberOfAttendees = +            eventAttendees?.reduce((acc, attendee) => { +                if (attendee.status === "attending") { +                    return acc + (attendee.number || 1); +                } +                return acc; +            }, 0) || 0; +        if (event.maxAttendees) { +            spotsRemaining = event.maxAttendees - numberOfAttendees; +            if (spotsRemaining <= 0) { +                noMoreSpots = true; +            }          } -        return acc; -      }, 0) || 0; -    if (event.maxAttendees) { -      spotsRemaining = event.maxAttendees - numberOfAttendees; -      if (spotsRemaining <= 0) { -        noMoreSpots = true; -      } -    } -    let metadata = { -      title: event.name, -      description: marked -        .parse(event.description, { renderer: renderPlain() }) -        .split(" ") -        .splice(0, 40) -        .join(" ") -        .trim(), -      image: eventHasCoverImage -        ? `https://${config.general.domain}/events/` + event.image -        : null, -      url: `https://${config.general.domain}/` + req.params.eventID, -    }; -    if ( -      req.headers.accept && -      (req.headers.accept.includes("application/activity+json") || -        req.headers.accept.includes("application/json") || -        req.headers.accept.includes("application/json+ld")) -    ) { -      res -        .header("Content-Type", "application/activity+json") -        .send(JSON.parse(event.activityPubActor || "{}")); -    } else { -      res.set("X-Robots-Tag", "noindex"); -      res.render("event", { -        ...frontendConfig(), -        title: event.name, -        escapedName: escapedName, -        eventData: event, -        eventAttendees: eventAttendees, -        numberOfAttendees, -        spotsRemaining: spotsRemaining, -        noMoreSpots: noMoreSpots, -        eventStartISO: eventStartISO, -        eventEndISO: eventEndISO, -        parsedLocation: parsedLocation, -        parsedStart: parsedStart, -        parsedEnd: parsedEnd, -        displayDate: displayDate, -        fromNow: fromNow, -        timezone: event.timezone, -        parsedDescription: parsedDescription, -        editingEnabled: editingEnabled, -        eventHasCoverImage: eventHasCoverImage, -        eventHasHost: eventHasHost, -        firstLoad: firstLoad, -        eventHasConcluded: eventHasConcluded, -        eventHasBegun: eventHasBegun, -        metadata: metadata, -      }); +        let metadata = { +            title: event.name, +            description: marked +                .parse(event.description, { renderer: renderPlain() }) +                .split(" ") +                .splice(0, 40) +                .join(" ") +                .trim(), +            image: eventHasCoverImage +                ? `https://${config.general.domain}/events/` + event.image +                : null, +            url: `https://${config.general.domain}/` + req.params.eventID, +        }; +        if ( +            req.headers.accept && +            (req.headers.accept.includes("application/activity+json") || +                req.headers.accept.includes("application/json") || +                req.headers.accept.includes("application/json+ld")) +        ) { +            res.header("Content-Type", "application/activity+json").send( +                JSON.parse(event.activityPubActor || "{}"), +            ); +        } else { +            res.set("X-Robots-Tag", "noindex"); +            res.render("event", { +                ...frontendConfig(), +                title: event.name, +                escapedName: escapedName, +                eventData: event, +                eventAttendees: eventAttendees, +                numberOfAttendees, +                spotsRemaining: spotsRemaining, +                noMoreSpots: noMoreSpots, +                eventStartISO: eventStartISO, +                eventEndISO: eventEndISO, +                parsedLocation: parsedLocation, +                parsedStart: parsedStart, +                parsedEnd: parsedEnd, +                displayDate: displayDate, +                fromNow: fromNow, +                timezone: event.timezone, +                parsedDescription: parsedDescription, +                editingEnabled: editingEnabled, +                eventHasCoverImage: eventHasCoverImage, +                eventHasHost: eventHasHost, +                firstLoad: firstLoad, +                eventHasConcluded: eventHasConcluded, +                eventHasBegun: eventHasBegun, +                metadata: metadata, +            }); +        } +    } catch (err) { +        addToLog( +            "displayEvent", +            "error", +            "Attempt to display event " + +                req.params.eventID + +                " failed with error: " + +                err, +        ); +        console.log(err); +        res.status(404).render("404", { url: req.url });      } -  } catch (err) { -    addToLog( -      "displayEvent", -      "error", -      "Attempt to display event " + -        req.params.eventID + -        " failed with error: " + -        err -    ); -    console.log(err); -    res.status(404).render("404", { url: req.url }); -  }  });  export default router;  | 
