feat(mobile): improve pairing invite journey

This commit is contained in:
jjbrunton committed 2026-09-06 12:38:16 +01:00
1 parent 402c027b14
commit f9481054de
12 files changed
+335 -92

No files matched your search

+16
View File
@@ -178,6 +178,17 @@ This prevents race conditions where multiple users try to join simultaneously.
**Waiting State:**
```
The invite journey leads with the shared outcome, then shows the recoverable
eight-character code. It offers both a bare-code copy and a full
`https://sauci.app/join/{code}` link copy. Cancelling an invite warns that it
deletes answers made after the code was created. The five-second poll surfaces
an inline offline state but continues retrying.
When pairing succeeds, both members are routed once per account and couple to
the `/(app)/paired` payoff screen. It reads only `newMatchesCount`: it never
reveals unmatched or individual answers. Existing swipe remains the named
post-pair question entry until Quick Spark is implemented.
┌─────────────────────────────┐
│ ❤️ Partner Code │
│ │
@@ -360,6 +371,11 @@ The code is never applied automatically; the user must accept the offer.
`join_page_viewed` / `join_page_code_copied` / `join_page_store_button_clicked`
(web, PostHog).
The mobile invite funnel also records aggregate-only prompt, share, join,
failure, completion, unlock, cancellation, clipboard, and conflict events.
Counts use fixed buckets. Invite codes, user IDs, partner IDs, questions, and
answers are never sent as analytics properties.
## Cascade Behavior
When a couple is deleted, foreign key cascades clean up: