diff --git a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/session/SessionModule.kt b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/session/SessionModule.kt index 931e79d722..baa4ef105c 100644 --- a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/session/SessionModule.kt +++ b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/session/SessionModule.kt @@ -3,6 +3,7 @@ package com.onesignal.session import com.onesignal.common.modules.IModule import com.onesignal.common.services.ServiceBuilder import com.onesignal.core.internal.background.IBackgroundService +import com.onesignal.core.internal.startup.IBootstrapService import com.onesignal.core.internal.startup.IStartableService import com.onesignal.session.internal.SessionManager import com.onesignal.session.internal.influence.IInfluenceManager @@ -39,6 +40,7 @@ internal class SessionModule : IModule { .provides() .provides() .provides() + .provides() builder.register().provides() builder.register().provides() } diff --git a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/session/internal/session/impl/SessionService.kt b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/session/internal/session/impl/SessionService.kt index a76425b9a3..8c36133857 100644 --- a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/session/internal/session/impl/SessionService.kt +++ b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/session/internal/session/impl/SessionService.kt @@ -6,6 +6,7 @@ import com.onesignal.core.internal.application.IApplicationService import com.onesignal.core.internal.background.IBackgroundService import com.onesignal.core.internal.config.ConfigModel import com.onesignal.core.internal.config.ConfigModelStore +import com.onesignal.core.internal.startup.IBootstrapService import com.onesignal.core.internal.startup.IStartableService import com.onesignal.core.internal.time.ITime import com.onesignal.debug.LogLevel @@ -32,7 +33,7 @@ internal class SessionService( private val _configModelStore: ConfigModelStore, private val _sessionModelStore: SessionModelStore, private val _time: ITime, -) : ISessionService, IStartableService, IBackgroundService, IApplicationLifecycleHandler { +) : ISessionService, IBootstrapService, IStartableService, IBackgroundService, IApplicationLifecycleHandler { override val startTime: Long get() = session!!.startTime @@ -50,9 +51,12 @@ internal class SessionService( // True if app has been foregrounded at least once since the app started private var hasFocused = false - override fun start() { + override fun bootstrap() { session = _sessionModelStore.model config = _configModelStore.model + } + + override fun start() { _applicationService.addApplicationLifecycleHandler(this) } diff --git a/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/session/internal/session/SessionServiceTests.kt b/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/session/internal/session/SessionServiceTests.kt index 1daa409ac0..3e275bbb79 100644 --- a/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/session/internal/session/SessionServiceTests.kt +++ b/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/session/internal/session/SessionServiceTests.kt @@ -18,7 +18,8 @@ private class Mocks { return mockSessionModelStore } - val sessionService = SessionService(MockHelper.applicationService(), MockHelper.configModelStore(), mockSessionModelStore, MockHelper.time(currentTime)) + val sessionService = + SessionService(MockHelper.applicationService(), MockHelper.configModelStore(), mockSessionModelStore, MockHelper.time(currentTime)) val spyCallback = spyk() } @@ -29,6 +30,7 @@ class SessionServiceTests : FunSpec({ val mocks = Mocks() val sessionService = mocks.sessionService + sessionService.bootstrap() sessionService.start() val sessionModelStore = mocks.sessionModelStore { it.isValid = false } sessionService.subscribe(mocks.spyCallback) @@ -50,6 +52,7 @@ class SessionServiceTests : FunSpec({ val sessionModelStore = mocks.sessionModelStore() // When + sessionService.bootstrap() sessionService.start() sessionService.onFocus(true) sessionService.subscribe(mocks.spyCallback) @@ -73,6 +76,7 @@ class SessionServiceTests : FunSpec({ val mocks = Mocks() val sessionService = mocks.sessionService + sessionService.bootstrap() sessionService.start() val sessionModelStore = mocks.sessionModelStore { @@ -101,6 +105,7 @@ class SessionServiceTests : FunSpec({ val mocks = Mocks() val sessionService = mocks.sessionService + sessionService.bootstrap() sessionService.start() val sessionModelStore = mocks.sessionModelStore { @@ -125,6 +130,7 @@ class SessionServiceTests : FunSpec({ val mocks = Mocks() val sessionService = mocks.sessionService + sessionService.bootstrap() sessionService.start() val sessionModelStore = mocks.sessionModelStore { @@ -147,6 +153,7 @@ class SessionServiceTests : FunSpec({ mocks.sessionModelStore { it.isValid = false } val sessionService = mocks.sessionService sessionService.subscribe(mocks.spyCallback) + sessionService.bootstrap() sessionService.start() // When