Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/main/kotlin/com/mparticle/kits/RoktConfigExtensions.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.mparticle.kits

import com.mparticle.rokt.PlacementOptions
import com.mparticle.rokt.RoktConfig
import com.rokt.roktsdk.CacheConfig
import com.mparticle.rokt.CacheConfig as MpCacheConfig
Expand Down Expand Up @@ -30,3 +31,8 @@ fun RoktConfig.toRoktSdkConfig(): RoktSdkConfig {

return builder.build()
}

fun PlacementOptions.toRoktSdkPlacementOptions(): com.rokt.roktsdk.PlacementOptions = com.rokt.roktsdk.PlacementOptions(
jointSdkSelectPlacements = this.jointSdkSelectPlacements,
dynamicPerformanceMarkers = this.dynamicPerformanceMarkers,
)
7 changes: 5 additions & 2 deletions src/main/kotlin/com/mparticle/kits/RoktKit.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import com.mparticle.internal.Logger
import com.mparticle.kits.KitIntegration.CommerceListener
import com.mparticle.kits.KitIntegration.IdentityListener
import com.mparticle.kits.KitIntegration.RoktListener
import com.mparticle.rokt.PlacementOptions
import com.mparticle.rokt.RoktConfig
import com.mparticle.rokt.RoktEmbeddedView
import com.rokt.roktsdk.Rokt
Expand Down Expand Up @@ -166,14 +167,15 @@ class RoktKit :
For more details, visit the official documentation:
https://docs.rokt.com/developers/integration-guides/android/how-to/adding-a-placement/
*/
override fun execute(
override fun selectPlacements(
viewName: String,
attributes: Map<String, String>,
mpRoktEventCallback: MpRoktEventCallback?,
placeHolders: MutableMap<String, WeakReference<RoktEmbeddedView>>?,
fontTypefaces: MutableMap<String, WeakReference<Typeface>>?,
filterUser: FilteredMParticleUser?,
mpRoktConfig: RoktConfig?,
placementOptions: PlacementOptions?,
) {
val placeholders: Map<String, WeakReference<Widget>>? = placeHolders?.mapNotNull { entry ->
val widget = Widget(entry.value.get()?.context as Context)
Expand Down Expand Up @@ -206,6 +208,7 @@ class RoktKit :
placeholders.takeIf { it?.isNotEmpty() == true },
fontTypefaces.takeIf { it?.isNotEmpty() == true },
roktConfig,
placementOptions?.toRoktSdkPlacementOptions(),
)
}

Expand Down Expand Up @@ -348,7 +351,7 @@ class RoktKit :
) {
val instance = MParticle.getInstance()
deferredAttributes = CompletableDeferred()
instance?.Internal()?.kitManager?.prepareAttributesAsync(attributes)
instance?.Internal()?.kitManager?.roktKitApi?.prepareAttributesAsync(attributes)
this.mpRoktEventCallback = mpRoktEventCallback
CoroutineScope(Dispatchers.Default).launch {
val resultAttributes = deferredAttributes!!.await()
Expand Down
8 changes: 8 additions & 0 deletions src/main/kotlin/com/mparticle/kits/RoktLayout.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import com.mparticle.MpRoktEventCallback
import com.mparticle.rokt.PlacementOptions
import com.mparticle.rokt.RoktConfig
import com.rokt.roktsdk.Rokt

Expand All @@ -20,9 +21,15 @@ fun RoktLayout(
mpRoktEventCallback: MpRoktEventCallback? = null,
config: RoktConfig? = null,
) {
var placementOptions: PlacementOptions? = null
val instance = RoktKit.instance
val resultMapState = remember { mutableStateOf<RoktResult?>(null) }
if (sdkTriggered) {
// Capture the timestamp when the SDK is triggered
placementOptions = PlacementOptions(
jointSdkSelectPlacements = System.currentTimeMillis(),
dynamicPerformanceMarkers = mapOf(),
)
LaunchedEffect(Unit) {
instance?.runComposableWithCallback(
HashMap(attributes),
Expand All @@ -42,6 +49,7 @@ fun RoktLayout(
onShouldHideLoadingIndicator = { resultMap.callback.onShouldHideLoadingIndicator() },
onUnload = { reason -> resultMap.callback.onUnload(reason) },
config = config?.toRoktSdkConfig(),
placementOptions = placementOptions?.toRoktSdkPlacementOptions(),
)
}
}
Expand Down
21 changes: 14 additions & 7 deletions src/test/kotlin/com/mparticle/kits/RoktKitTests.kt
Original file line number Diff line number Diff line change
Expand Up @@ -156,14 +156,15 @@ class RoktKitTests {

// Act
val inputAttributes: Map<String, String> = mapOf("initial_attr" to "initial_value")
roktKit.execute(
roktKit.selectPlacements(
viewName = "test_view",
attributes = inputAttributes,
mpRoktEventCallback = null,
placeHolders = null,
fontTypefaces = null,
filterUser = mockFilterUser,
mpRoktConfig = null,
placementOptions = null,
)

// Assert
Expand Down Expand Up @@ -212,14 +213,15 @@ class RoktKitTests {
roktKit.configuration = MockKitConfiguration.createKitConfiguration(JSONObject().put("hs", JSONObject()))

// Act
roktKit.execute(
roktKit.selectPlacements(
viewName = "test_view",
attributes = emptyMap(),
mpRoktEventCallback = null,
placeHolders = null,
fontTypefaces = null,
filterUser = mockFilterUser,
mpRoktConfig = null,
placementOptions = null,
)

// Assert
Expand Down Expand Up @@ -260,14 +262,15 @@ class RoktKitTests {
roktKit.configuration = MockKitConfiguration.createKitConfiguration(JSONObject().put("hs", JSONObject()))

// Act
roktKit.execute(
roktKit.selectPlacements(
viewName = "test_view",
attributes = emptyMap(),
mpRoktEventCallback = null,
placeHolders = null,
fontTypefaces = null,
filterUser = mockFilterUser,
mpRoktConfig = null,
placementOptions = null,
)

// Assert
Expand Down Expand Up @@ -308,14 +311,15 @@ class RoktKitTests {
roktKit.configuration = MockKitConfiguration.createKitConfiguration(JSONObject().put("hs", JSONObject()))

// Act
roktKit.execute(
roktKit.selectPlacements(
viewName = "test_view",
attributes = emptyMap(),
mpRoktEventCallback = null,
placeHolders = null,
fontTypefaces = null,
filterUser = mockFilterUser,
mpRoktConfig = null,
placementOptions = null,
)

// Assert
Expand Down Expand Up @@ -374,14 +378,15 @@ class RoktKitTests {
"ShouldFilter" to "testData",
)
// Act
roktKit.execute(
roktKit.selectPlacements(
viewName = "test",
attributes = inputAttributes,
mpRoktEventCallback = null,
placeHolders = null,
fontTypefaces = null,
filterUser = mockFilterUser,
mpRoktConfig = null,
placementOptions = null,
)

// Assert
Expand Down Expand Up @@ -448,14 +453,15 @@ class RoktKitTests {
"ShouldFilter" to "testData",
)
// Act
roktKit.execute(
roktKit.selectPlacements(
viewName = "test",
attributes = inputAttributes,
mpRoktEventCallback = null,
placeHolders = null,
fontTypefaces = null,
filterUser = mockFilterUser,
mpRoktConfig = null,
placementOptions = null,
)

// Assert
Expand Down Expand Up @@ -1348,14 +1354,15 @@ class RoktKitTests {
// Set MParticle instance to null
MParticle.setInstance(null)

roktKit.execute(
roktKit.selectPlacements(
viewName = "test_view",
attributes = testAttributes,
mpRoktEventCallback = null,
placeHolders = null,
fontTypefaces = null,
filterUser = mockFilterUser,
mpRoktConfig = null,
placementOptions = null,
)

verify(exactly = 1) {
Expand Down
Loading