Activities feed shows past events with no indication — hide by default + add a "Past events" filter chip #72

Closed
opened 2026-05-23 21:55:03 +00:00 by padreug · 0 comments
Owner

Problem

The activity feed renders every activity from the Nostr subscription
regardless of whether it's already happened. Past events show up
alongside upcoming ones with nothing on the card distinguishing them,
so the user has to read the date on each card to figure out what
they're actually able to attend.

Proposed fix

Two pieces:

  1. Hide past events by default in the activity feed. An event is
    "past" when endDate < now (fall back to startDate < now when
    endDate is absent). Implementation goes in
    useActivityFilters.applyFilters — sits cleanly next to the
    existing temporal pills (Today/Tomorrow/This Week/etc.) and
    composes with category filters via the same intersection.
  2. "Past events" filter chip alongside the existing chips on
    ActivitiesPage (next to the "My tickets" chip from #71). Toggling
    it ON includes past events in the feed; OFF (default) hides them.
    When ON, each past ActivityCard gets a small Past badge so the
    user can spot at a glance which ones already happened. Use the
    same lucide icon language we already lean on (a clock or
    History-style glyph).

Out of scope

  • Server-side filtering on the relay subscription (past events still
    arrive over the wire from the NIP-52 subscription — filtering is
    purely client-side). Fine; the wire volume is tiny.
  • ActivityDetailPage already renders the date prominently so no
    detail-page-side change is strictly required, but landing a "this
    event already happened" hint above the buy CTA would be a nice
    follow-up if we want the buy flow to be 100% unambiguous.

Test plan

  • Feed renders only upcoming activities on default load.
  • Toggle "Past events" chip → past activities appear, each with
    a Past badge.
  • Combine with category filter → intersection still works (only
    past activities in the selected categories).
  • Date-picker on a specific past date → activities for that date
    show regardless of the chip state (date-pick overrides the
    past-events hide, mirroring how the existing date-pick
    overrides the temporal pills).
## Problem The activity feed renders every activity from the Nostr subscription regardless of whether it's already happened. Past events show up alongside upcoming ones with nothing on the card distinguishing them, so the user has to read the date on each card to figure out what they're actually able to attend. ## Proposed fix Two pieces: 1. **Hide past events by default** in the activity feed. An event is "past" when `endDate < now` (fall back to `startDate < now` when `endDate` is absent). Implementation goes in `useActivityFilters.applyFilters` — sits cleanly next to the existing temporal pills (Today/Tomorrow/This Week/etc.) and composes with category filters via the same intersection. 2. **"Past events" filter chip** alongside the existing chips on `ActivitiesPage` (next to the "My tickets" chip from #71). Toggling it ON includes past events in the feed; OFF (default) hides them. When ON, each past `ActivityCard` gets a small `Past` badge so the user can spot at a glance which ones already happened. Use the same lucide icon language we already lean on (a clock or `History`-style glyph). ## Out of scope - Server-side filtering on the relay subscription (past events still arrive over the wire from the NIP-52 subscription — filtering is purely client-side). Fine; the wire volume is tiny. - `ActivityDetailPage` already renders the date prominently so no detail-page-side change is strictly required, but landing a "this event already happened" hint above the buy CTA would be a nice follow-up if we want the buy flow to be 100% unambiguous. ## Test plan - [ ] Feed renders only upcoming activities on default load. - [ ] Toggle "Past events" chip → past activities appear, each with a `Past` badge. - [ ] Combine with category filter → intersection still works (only past activities in the selected categories). - [ ] Date-picker on a specific past date → activities for that date show regardless of the chip state (date-pick overrides the past-events hide, mirroring how the existing date-pick overrides the temporal pills).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aiolabs/webapp#72
No description provided.