[meetup] Support event hosts, online venues and UTC event dates - #1
Merged
Merged
Conversation
Three gaps blocked an adopter whose sessions are online, hosted by a named organizer, and dated in true UTC (GlobalCpp). eventHosts. CreateEventInput.eventHosts is [Int!] -- Meetup member IDs -- and was never sent, so a draft always fell back to the creating organizer. Config gains `hosts` (name -> member ID) and `defaultHosts`, and both create commands take `--host "Name,Other"`. Unknown names fail at config load or resolve time rather than silently producing a hostless event. When nothing resolves, the key is omitted entirely and Meetup's own default applies, so existing adopters see no change. Online venues. Meetup has no venue record for an online event, so list-venues never returns one and there was no way to express it: the venue map was Record<string, number> and resolveVenueId rejected non-numeric values. venueId is a String on the API, so the map now accepts the literal "online" alongside numeric IDs. Timezones. Meetup reads startDateTime as wall time in the group's own timezone and accepts no offset, but the builder passed date.toISOString().slice(0,19) -- the UTC clock reading. That is correct only if the source stores local time with a nominal Z, which is what cppserbia does. An adopter storing real instants got every event shifted by the zone's offset: 2026-08-22T16:00:00Z became a 16:00 Chicago event instead of 11:00. Rather than change the reading for everyone, the interpretation is now explicit. With `timezone` set, the date is a true instant converted to wall time in that zone (DST resolved per date, via Intl). Without it, the previous behaviour stands, so cppserbia is unaffected -- its tests still produce the same payload byte for byte. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
eventHosts: config gainshosts(name -> member ID) anddefaultHosts, andboth create commands take
--host "Name,Other". Unknown names fail at config load orresolve time; when nothing resolves, the key is omitted, and Meetup's default applies.
VenueMapvalues are nownumber | "online". Meetup has no venue record for anonline event, so
list-venuesnever returns one and the sentinel is the only way toexpress it.
timezoneconfig key picks howevent.dateis read: set, it is a true instantconverted to wall time in that zone; omitted, the existing UTC-clock reading stands.
The timezone default is deliberately the old behavior, cppserbia stores local wall
time with a nominal
Z, and its payloads are unchanged byte for byte.