Planning Ahead
A single Day Summary entry as it moves between invitation, response, the live event window, and history — plus the loop that turns an empty day into a suggestion.
State diagram
stateDiagram-v2
[*] --> NoPlan
NoPlan --> Invited : organiser invites user
Invited --> Accepted : user taps "Join"
Invited --> Rejected : user declines invitation
Accepted --> Ongoing : event day arrives, event underway
Ongoing --> Past : event ends
Rejected --> Accepted : user taps "Join" again
Accepted --> Rejected : "Cancel RSVP" (confirmed)
NoPlan --> Shipped : "Ship this day"
Shipped --> [*]
NoPlan --> OpenToSuggestions : sets available-from time (2pm/5pm/8pm)
OpenToSuggestions --> Invited : matching plan found nearby
Past --> [*]
States
| State | Meaning |
|---|---|
| NoPlan | The day is empty — suggestions are offered. |
| Invited | Shown in grey — awaiting the user's response. |
| Accepted | Shown in black — user joined or accepted. |
| Rejected | Shown in grey with strikethrough. |
| Ongoing | Today's event, highlighted blue with a live countdown. |
| Past | Event has ended; available from group History. |
| Shipped | Empty day dismissed from the list — not an RSVP action. |
| OpenToSuggestions | User declared availability via the /maps/availability call. |
Reading the diagram
- Visual treatment tracks state directly:
Invitedrenders grey,Rejectedrenders grey-strikethrough,Accepted/Ongoingrender black, andOngoingis additionally highlighted blue with a live countdown. Shippedis a dismissal, not a cancellation — it only removes the empty day from the list, it never touches a real RSVP.OpenToSuggestionsposts to/maps/availabilityand re-enters the normal invitation flow the moment a match is found.