From 2b47f4f8141820835c778ea748f8ae7f47ef261d Mon Sep 17 00:00:00 2001 From: Raphael Kabo Date: Mon, 5 Feb 2024 19:26:34 +0000 Subject: Handle hidden attendees in frontend --- src/routes/frontend.ts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'src/routes') diff --git a/src/routes/frontend.ts b/src/routes/frontend.ts index cc97ab8..23418df 100644 --- a/src/routes/frontend.ts +++ b/src/routes/frontend.ts @@ -159,6 +159,24 @@ router.get("/:eventID", async (req: Request, res: Response) => { } return acc; }, 0) || 0; + const visibleAttendees = event.attendees?.filter( + (attendee) => attendee.visibility === "public", + ); + const hiddenAttendees = event.attendees?.filter( + (attendee) => attendee.visibility === "private", + ); + const numberOfHiddenAttendees = event.attendees?.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 +207,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, -- cgit v1.2.3 From f11a16ea501ca7f792337751a0365215ac7aafc4 Mon Sep 17 00:00:00 2001 From: Raphael Kabo Date: Mon, 5 Feb 2024 20:56:00 +0000 Subject: Backwards compatibility for attendee visibility --- src/routes/frontend.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/routes') diff --git a/src/routes/frontend.ts b/src/routes/frontend.ts index 23418df..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,13 +163,13 @@ router.get("/:eventID", async (req: Request, res: Response) => { } return acc; }, 0) || 0; - const visibleAttendees = event.attendees?.filter( + const visibleAttendees = eventAttendees?.filter( (attendee) => attendee.visibility === "public", ); - const hiddenAttendees = event.attendees?.filter( + const hiddenAttendees = eventAttendees?.filter( (attendee) => attendee.visibility === "private", ); - const numberOfHiddenAttendees = event.attendees?.reduce( + const numberOfHiddenAttendees = eventAttendees?.reduce( (acc, attendee) => { if ( attendee.status === "attending" && -- cgit v1.2.3