From 114b1ce42956187e63a414e1c45c1113733e14f4 Mon Sep 17 00:00:00 2001 From: Abhishek Pandey <64667840+1abhishekpandey@users.noreply.github.com> Date: Wed, 6 Sep 2023 22:11:47 +0530 Subject: [PATCH 1/2] fxi: sessionId not getting cleared when automatic lifecycle changes Also, take into consideration the new lifecycle api --- .../sdk/core/RudderUserSessionManager.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/rudderstack/android/sdk/core/RudderUserSessionManager.java b/core/src/main/java/com/rudderstack/android/sdk/core/RudderUserSessionManager.java index 3746623fb..d1dbc3ed9 100644 --- a/core/src/main/java/com/rudderstack/android/sdk/core/RudderUserSessionManager.java +++ b/core/src/main/java/com/rudderstack/android/sdk/core/RudderUserSessionManager.java @@ -17,16 +17,25 @@ public void startSessionTracking() { // 8. clear session if automatic session tracking was enabled previously // but disabled presently or vice versa. boolean previousAutoSessionTrackingStatus = preferenceManager.getAutoSessionTrackingStatus(); - if (previousAutoSessionTrackingStatus != config.isTrackAutoSession()) { + boolean currentAutomaticSessionTrackingStatus = isAutomaticSessionTrackingEnabled(); + if (previousAutoSessionTrackingStatus != currentAutomaticSessionTrackingStatus) { userSession.clearSession(); } - preferenceManager.saveAutoSessionTrackingStatus(config.isTrackAutoSession()); + preferenceManager.saveAutoSessionTrackingStatus(currentAutomaticSessionTrackingStatus); // starting automatic session tracking if enabled. - if (config.isTrackLifecycleEvents() && config.isTrackAutoSession()) { + if (currentAutomaticSessionTrackingStatus) { userSession.startSessionIfNeeded(); } } + private boolean isAutomaticSessionTrackingEnabled() { + return config.isTrackAutoSession() && isAutomaticLifeCycleEnabled(); + } + + private boolean isAutomaticLifeCycleEnabled() { + return config.isTrackLifecycleEvents() || config.isNewLifeCycleEvents(); + } + void applySessionTracking(RudderMessage message) { // Session Tracking if (userSession.getSessionId() != null) { From e3ce77a9015b5d426390f254d2301a00ebcc4eba Mon Sep 17 00:00:00 2001 From: Abhishek Pandey <64667840+1abhishekpandey@users.noreply.github.com> Date: Fri, 8 Sep 2023 17:55:11 +0530 Subject: [PATCH 2/2] fix: add new lifecycle api support in applySessionTracking method Currently it is not taking the new lifecycle api --- .../rudderstack/android/sdk/core/RudderUserSessionManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/com/rudderstack/android/sdk/core/RudderUserSessionManager.java b/core/src/main/java/com/rudderstack/android/sdk/core/RudderUserSessionManager.java index d1dbc3ed9..eb78f529d 100644 --- a/core/src/main/java/com/rudderstack/android/sdk/core/RudderUserSessionManager.java +++ b/core/src/main/java/com/rudderstack/android/sdk/core/RudderUserSessionManager.java @@ -41,7 +41,7 @@ void applySessionTracking(RudderMessage message) { if (userSession.getSessionId() != null) { message.setSession(userSession); } - if (config.isTrackLifecycleEvents() && config.isTrackAutoSession()) { + if (isAutomaticSessionTrackingEnabled()) { userSession.updateLastEventTimeStamp(); } }