summaryrefslogtreecommitdiff
path: root/src/routes/frontend.ts
diff options
context:
space:
mode:
authorRaphael <mail@raphaelkabo.com>2024-02-06 09:18:19 +0000
committerGitHub <noreply@github.com>2024-02-06 09:18:19 +0000
commit9e249e508ead933cb26eba597003a3b4764e27a5 (patch)
treeff9c1b7784b436002a2ebfa86779c4e25ecf64b1 /src/routes/frontend.ts
parentecff04b132db687f67d9a6cda2d1c13831c45394 (diff)
parente40ef51f26d04620b85fcbb15b5c9de857fcbf7b (diff)
Merge pull request #129 from lowercasename/rk/fix-pleroma
Pleroma federation fixes and hidden RSVP functionality
Diffstat (limited to 'src/routes/frontend.ts')
-rw-r--r--src/routes/frontend.ts28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/routes/frontend.ts b/src/routes/frontend.ts
index cc97ab8..8ddfbf6 100644
--- a/src/routes/frontend.ts
+++ b/src/routes/frontend.ts
@@ -142,7 +142,11 @@ router.get("/:eventID", async (req: Request, res: Response) => {
if (el.number && el.number > 1) {
el.name = `${el.name} (${el.number} people)`;
}
- return el;
+ return {
+ ...el,
+ // Backwards compatibility - if visibility is not set, default to public
+ visibility: el.visibility || "public",
+ };
})
.filter((obj, pos, arr) => {
return (
@@ -159,6 +163,24 @@ router.get("/:eventID", async (req: Request, res: Response) => {
}
return acc;
}, 0) || 0;
+ const visibleAttendees = eventAttendees?.filter(
+ (attendee) => attendee.visibility === "public",
+ );
+ const hiddenAttendees = eventAttendees?.filter(
+ (attendee) => attendee.visibility === "private",
+ );
+ const numberOfHiddenAttendees = eventAttendees?.reduce(
+ (acc, attendee) => {
+ if (
+ attendee.status === "attending" &&
+ attendee.visibility === "private"
+ ) {
+ return acc + (attendee.number || 1);
+ }
+ return acc;
+ },
+ 0,
+ );
if (event.maxAttendees) {
spotsRemaining = event.maxAttendees - numberOfAttendees;
if (spotsRemaining <= 0) {
@@ -189,8 +211,10 @@ router.get("/:eventID", async (req: Request, res: Response) => {
title: event.name,
escapedName: escapedName,
eventData: event,
- eventAttendees: eventAttendees,
+ visibleAttendees,
+ hiddenAttendees,
numberOfAttendees,
+ numberOfHiddenAttendees,
spotsRemaining: spotsRemaining,
noMoreSpots: noMoreSpots,
eventStartISO: eventStartISO,