mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 08:04:45 +00:00
RSVP (item 4): - CalendarRsvpRow now uses a deterministic d-tag of the form 'rsvp:<kind>:<pubkey>:<dtag>' derived from the target appointment's address. Each tap replaces the user's single addressable RSVP for that event rather than appending another, eliminating the previous footgun where rapid taps spammed relays with parallel kind-31925 events. - Buttons now reflect the current RSVP status reactively: the matching status renders as filled-tonal with the status colour; the others render outlined. Reads `LocalCache.getOrCreateAddressableNote()` and observes the metadata flow so the row updates as soon as the new event lands in cache (own broadcast or relay echo). Collections (item 5): - Lifted NewCalendarCollectionScreen onto NewCalendarCollectionViewModel with title/description/selected-event state. Editing mode pre-populates from an existing kind-31924 by dTag (already supported by Route.NewCalendarCollection but previously unused), preserves the d-tag so the publish replaces the addressable, and seeds the selected-event list from the existing `a` tags. - Added a multi-select picker that lists the user's own appointments (kinds 31922/31923 authored by `account.userProfile()`), sorted upcoming-first. Toggling a row adds or removes its address from the outgoing `a` tag list. - Wired Route.NewCalendarCollection.dTag through to the screen so the edit flow becomes reachable from anywhere that has the calendar's dTag (the event-detail screen will plug into this in a follow-up). https://claude.ai/code/session_01CbyrA2GdM4EQh8T6nsst6U