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; }