X28 — Session Recovery Dialog
Účel obrazovky
Jednorázový modální dialog po startu relace aplikace, když backend (GET /cart) vrátí platný aktivní košík s běžící rezervací. Nabídne obnovení nákupu nebo zrušení košíku a návrat na domovskou obrazovku.
Content Priority
- Hlavní text — např. „Máte rozpracovanou objednávku (zbývá X:XX). Pokračovat?" — čas X:XX musí odpovídat aktuálnímu stavu countdownu z košíku / rezervace
- Primární CTA — „Pokračovat" → navigace na krok odpovídající stavu objednávky
- Sekundární / destruktivní CTA — „Zrušit" → zrušení košíku na serveru a návrat na úvod
Interakce
| Trigger | Akce | Cíl |
|---|---|---|
Otevření aplikace (cold start) po úspěšném GET /cart s aktivním košíkem | Zobrazení dialogu (jednou per „session recovery" dle produktové logiky) | — |
| Background → foreground za stejných podmínek | Stejné chování jako při cold startu (pokud dialog ještě nebyl vyřešen v dané relaci) | — |
| Tap „Pokračovat" | navigate podle aktuálního kroku nákupu | P4 — Seat map, P5 — Košík nebo P6 — Checkout |
| Tap „Zrušit" | DELETE /cart (nebo ekvivalent API), vyčištění lokálního stavu | P1 — Home / Feed |
Stavy
| Stav | Popis |
|---|---|
| Aktivní košík + běžící čas | Dialog s konkrétním zbývajícím časem |
| Košík prázdný / neaktivní | Dialog se nezobrazí |
| Síťová chyba při DELETE | Chybová hláška, možnost opakovat; košík ponechat do vyřešení |
Edge Cases
| Scénář | Řešení |
|---|---|
Timer vypršel mezi GET /cart a tapnutím Pokračovat | Po navigaci řešit jako timeout (X4 — Chyba — Timeout) nebo nový fetch stavu |
| Uživatel je již na P5 a aplikace se obnoví | Dialog jen pokud to produkt definuje (např. nezobrazovat, pokud už jsme v purchase flow) — jinak deduplikace s X29 |
| Více zařízení | Server je source of truth; lokální stav se synchronizuje po GET /cart |
| Opakované přepínání aplikace | Zabránit spamu dialogy — např. jednou za relaci nebo dokud uživatel nezvolí akci |
Mobilní patterny
- Modal — nesmí blokovat systémové gesty nebezpečně; na iOS/Android konzistentní s DS
- Countdown — formát mm:ss nebo jednotný s P4 / P5
- Destruktivní akce — „Zrušit" vizuálně odlišené od primární (outline / text button)
Vztah k ostatním obrazovkám
- X29 — Active Order Banner zůstává perzistentní po celou dobu aktivní objednávky; X28 je bod rozhodnutí při návratu do aplikace.
- Po zrušení košíku uživatel nepokračuje v nákupní větvi — shoda s prázdným košíkem na P1.