feat(events): event / RSVP cards (LC-491) #467
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/LC-491-events-rsvp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Event / RSVP cards (LC-491): post an event with a date, optional location, and Going / Maybe / Can't-go RSVP, exported to the room's iCal feed. Inspired by Discord events.
How (reuses the poll engine)
An event is a poll with a start time: migration 0072 adds
polls.event_at+event_location. A poll withevent_atset renders as an event card and exports to iCal; everything else is an ordinary poll, unchanged./room/{id}/event. The handler validates and callsdb::polls::create_event, which inserts the message + poll (single-choice, non-anonymous, never-closes) + three RSVP options (in the creator's locale).POST /poll/{id}/vote,PollUpdatedWS re-render, andbuild_poll_viewunchanged.poll_block.htmlgains an event-card header (calendar + when + location) whenevent_atis set.GET /feed/ical/{token}now emits aVEVENTper event (DTSTART= event time,SUMMARY= title,LOCATION), alongside the existing poll-closing events.Tests
routes_polls.rs: create-event storesevent_at/location + 3 options, RSVP reuses the vote path, the event surfaces inevents_for_room, and an invalid time is rejected.just check,just test,just test-saasall green.Notes
Verify
just verifybuilds the release binary clean; boot fails only on the missing SSO env (environmental, as in prior PRs).POST /room/{id}/event creates an event (validates title/time/location, RSVP options in the creator's locale) via create_event. A composer "Event" button opens a new modal (date + optional location) mirroring the poll modal. The room iCal feed emits a VEVENT per event (DTSTART = event time, SUMMARY = title, LOCATION). i18n en + es. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>