Fix: Saved address now persists across sessions
Root cause: Ephemeral sessions weren't persisted after checkout - Sessions ephemeral by default, only persisted during CheckoutFlow - After checkout completes, state changes to MainMenu - SavedAddress was lost because session wasn't saved Fix implemented: - Persist ephemeral sessions when SavedAddress is not null - Also persist when cart is non-empty (preserve cart state) - User's saved shipping address now available on next checkout - Improves UX - no need to re-enter address every time 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
a6f1c32461
commit
d897bb99c3
@ -154,8 +154,14 @@ namespace TeleBot.Services
|
|||||||
session.LastActivityAt = DateTime.UtcNow;
|
session.LastActivityAt = DateTime.UtcNow;
|
||||||
_inMemorySessions.AddOrUpdate(session.Id, session, (key, old) => session);
|
_inMemorySessions.AddOrUpdate(session.Id, session, (key, old) => session);
|
||||||
|
|
||||||
// Don't persist ephemeral sessions, except when in checkout flow
|
// Don't persist ephemeral sessions, except when:
|
||||||
if (session.IsEphemeral && session.State != SessionState.CheckoutFlow)
|
// 1. In checkout flow
|
||||||
|
// 2. Has saved shipping address (user opted to save)
|
||||||
|
// 3. Has non-empty cart (preserve cart across sessions)
|
||||||
|
if (session.IsEphemeral &&
|
||||||
|
session.State != SessionState.CheckoutFlow &&
|
||||||
|
session.SavedAddress == null &&
|
||||||
|
session.Cart.IsEmpty())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user