From b0397eb8b8956cd182e3146accb131cd5f9e0003 Mon Sep 17 00:00:00 2001 From: James Newman Date: Fri, 30 Jan 2026 15:51:42 -0500 Subject: [PATCH] feat: Add support for Get / Set SessionId on Rokt --- build.gradle | 2 +- src/main/kotlin/com/mparticle/kits/RoktKit.kt | 18 +++++++++++++++ .../kotlin/com/mparticle/kits/RoktKitTests.kt | 23 +++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index f369bd8..221e279 100644 --- a/build.gradle +++ b/build.gradle @@ -75,7 +75,7 @@ dependencies { implementation 'androidx.annotation:annotation:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' implementation 'androidx.compose.runtime:runtime' - api 'com.rokt:roktsdk:4.12.4' + api 'com.rokt:roktsdk:4.13.0' testImplementation files('libs/java-json.jar') testImplementation 'com.squareup.assertj:assertj-android:1.2.0' diff --git a/src/main/kotlin/com/mparticle/kits/RoktKit.kt b/src/main/kotlin/com/mparticle/kits/RoktKit.kt index f9a8aa6..4cfc804 100644 --- a/src/main/kotlin/com/mparticle/kits/RoktKit.kt +++ b/src/main/kotlin/com/mparticle/kits/RoktKit.kt @@ -318,6 +318,24 @@ class RoktKit : Rokt.close() } + /** + * Set the session id to use for the next execute call. + * This is useful for cases where you have a session id from a non-native integration, + * e.g. WebView, and you want the session to be consistent across integrations. + * + * @param sessionId The session id to be set. Must be a non-empty string. + */ + override fun setSessionId(sessionId: String) { + Rokt.setSessionId(sessionId) + } + + /** + * Get the session id to use within a non-native integration e.g. WebView. + * + * @return The session id or null if no session is present. + */ + override fun getSessionId(): String? = Rokt.getSessionId() + override fun enrichAttributes(attributes: MutableMap, user: FilteredMParticleUser?) { val finalAttributes = prepareFinalAttributes(user, attributes) deferredAttributes?.complete(finalAttributes) diff --git a/src/test/kotlin/com/mparticle/kits/RoktKitTests.kt b/src/test/kotlin/com/mparticle/kits/RoktKitTests.kt index c532f40..1a18b5a 100644 --- a/src/test/kotlin/com/mparticle/kits/RoktKitTests.kt +++ b/src/test/kotlin/com/mparticle/kits/RoktKitTests.kt @@ -1372,6 +1372,29 @@ class RoktKitTests { unmockkObject(Rokt) } + @Test + fun testSetSessionId_delegatesToRoktSdk() { + mockkObject(Rokt) + every { Rokt.setSessionId(any()) } just runs + + roktKit.setSessionId("test-session-id") + + verify { Rokt.setSessionId("test-session-id") } + unmockkObject(Rokt) + } + + @Test + fun testGetSessionId_returnsValueFromRoktSdk() { + mockkObject(Rokt) + every { Rokt.getSessionId() } returns "expected-session-id" + + val result = roktKit.getSessionId() + + assertEquals("expected-session-id", result) + verify { Rokt.getSessionId() } + unmockkObject(Rokt) + } + private var emptyCoreCallbacks: CoreCallbacks = object : CoreCallbacks { var activity = Activity() override fun isBackgrounded(): Boolean = false