Uh oh!
There was an error while loading. Please reload this page.
Let the platform hold RSVP notes whose event has not synced yet - #363
Merged
Conversation
Attendee responses to a calendar invite fold onto the event's thread. When the event hasn't synced yet, the note is now parked by the platform (deferUntilThread) and attached automatically once the event arrives, instead of the connector tracking and retrying it itself. As a result, a Gmail conversation made up entirely of RSVP responses never creates a standalone email thread, even while its event is still missing — previously the response stayed visible there as a fallback. The response is expected to land on the event eventually; a bug in the platform's attach step would lose it silently rather than leave it visibly stranded.
Uh oh!
There was an error while loading. Please reload this page.
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 freeto 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.
Follow-up to #361, which added
NewNote.deferUntilThread. This makes the Gmailconnector use it and deletes the hold-and-retry machinery it was carrying.
What changes
An attendee's RSVP is folded onto the event's thread. When the event has not
synced yet, the connector used to store the message, poll for the event, and
retract the standalone email thread once the fold succeeded — roughly 330 lines
of bookkeeping (
drainPendingRsvpsFn, a pending record, a store prefix and aTTL). All of it is gone; the note now sets
deferUntilThreadand the platformholds it.
Behaviour change worth reviewing
A fold miss previously left the RSVP visible as its own email thread until the
retry succeeded. Now the message is folded away regardless, so a conversation
that is nothing but responses produces no thread at all and the note is
invisible until the platform attaches it.
Two consequences, both documented in-code at the fold site:
degrading to a visible-but-misfiled email thread.
connected but not that calendar — nothing will ever carry the event's
identifier, so the held note ages out and the response is dropped. This is
an accepted trade, not an oversight. It replaced a fallback that kept the
response visible and retried for longer.
Also fixed
recordRsvpOutcomeis no longer gated on the note having saved. Reversaltracking (a decline followed later by an acceptance) reads state written by
that call, and a deferred note returns no id — so gating on it would have meant
a deferred decline never recorded its state, and a later genuine acceptance
would have been silently treated as a bare acceptance and suppressed. The
outcome records the attendee's actual response, which is the right source of
truth whether or not the note itself is held.
Verification
376 tests pass;
tsc --noEmitclean. Rebased onto current main, so it carriesthe connector-emitted mail signals work from #359 — the fold and the
classification-parent selection interact correctly: a deferred RSVP is excluded
from being picked as the classification parent, which is what you want, since
its note is dropped from the email thread either way.