From d897bb99c37e1e698228d77161693c177b8e20d2 Mon Sep 17 00:00:00 2001 From: SysAdmin Date: Mon, 6 Oct 2025 04:58:01 +0100 Subject: [PATCH] Fix: Saved address now persists across sessions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- TeleBot/TeleBot/Services/SessionManager.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/TeleBot/TeleBot/Services/SessionManager.cs b/TeleBot/TeleBot/Services/SessionManager.cs index 04e6e48..01e0887 100644 --- a/TeleBot/TeleBot/Services/SessionManager.cs +++ b/TeleBot/TeleBot/Services/SessionManager.cs @@ -154,8 +154,14 @@ namespace TeleBot.Services session.LastActivityAt = DateTime.UtcNow; _inMemorySessions.AddOrUpdate(session.Id, session, (key, old) => session); - // Don't persist ephemeral sessions, except when in checkout flow - if (session.IsEphemeral && session.State != SessionState.CheckoutFlow) + // Don't persist ephemeral sessions, except when: + // 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; }