Skip to content

Commit 7c309dc

Browse files
feat: SQDSDKS-7426 - Add RoktEvent mapping and emission
2 parents 3eec545 + 800426c commit 7c309dc

File tree

3 files changed

+326
-9
lines changed

3 files changed

+326
-9
lines changed

build.gradle

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
21
buildscript {
3-
ext.kotlin_version = '1.7.22'
2+
ext.kotlin_version = '1.9.0'
43
if (!project.hasProperty('version') || project.version.equals('unspecified')) {
54
project.version = '+'
65
}
@@ -13,7 +12,7 @@ buildscript {
1312
dependencies {
1413
classpath 'com.android.tools.build:gradle:7.4.1'
1514
classpath 'com.mparticle:android-kit-plugin:' + project.version
16-
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10'
15+
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.0'
1716
}
1817
}
1918

@@ -58,9 +57,11 @@ repositories {
5857

5958
dependencies {
6059
implementation 'androidx.annotation:annotation:1.5.0'
60+
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4'
6161
api 'com.rokt:roktsdk:4.10.0'
6262

6363
testImplementation files('libs/java-json.jar')
6464
testImplementation 'com.squareup.assertj:assertj-android:1.2.0'
6565
testImplementation ("io.mockk:mockk:1.13.4")
66+
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4'
6667
}

src/main/kotlin/com/mparticle/kits/RoktKit.kt

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import android.content.pm.PackageManager
77
import android.graphics.Typeface
88
import android.os.Build
99
import com.mparticle.BuildConfig
10-
import com.mparticle.MParticle
1110
import com.mparticle.MParticle.IdentityType
1211
import com.mparticle.MpRoktEventCallback
1312
import com.mparticle.UnloadReasons
@@ -23,13 +22,18 @@ import com.mparticle.rokt.RoktConfig
2322
import com.mparticle.rokt.RoktEmbeddedView
2423
import com.rokt.roktsdk.CacheConfig
2524
import com.rokt.roktsdk.Rokt
26-
import com.rokt.roktsdk.Rokt.SdkFrameworkType.*
25+
import com.rokt.roktsdk.Rokt.SdkFrameworkType.Android
26+
import com.rokt.roktsdk.Rokt.SdkFrameworkType.Cordova
27+
import com.rokt.roktsdk.Rokt.SdkFrameworkType.Flutter
28+
import com.rokt.roktsdk.Rokt.SdkFrameworkType.ReactNative
29+
import com.rokt.roktsdk.RoktEvent
2730
import com.rokt.roktsdk.RoktWidgetDimensionCallBack
2831
import com.rokt.roktsdk.Widget
32+
import kotlinx.coroutines.flow.Flow
33+
import kotlinx.coroutines.flow.map
2934
import java.lang.ref.WeakReference
3035
import java.math.BigDecimal
3136

32-
3337
/**
3438
* MParticle embedded implementation of the Rokt Library.
3539
*
@@ -203,6 +207,45 @@ class RoktKit : KitIntegration(), CommerceListener, IdentityListener, RoktListen
203207
)
204208
}
205209

210+
override fun events(identifier: String): Flow<com.mparticle.RoktEvent> {
211+
return Rokt.events(identifier)
212+
.map { event ->
213+
when (event) {
214+
is RoktEvent.HideLoadingIndicator -> com.mparticle.RoktEvent.HideLoadingIndicator
215+
is RoktEvent.ShowLoadingIndicator -> com.mparticle.RoktEvent.ShowLoadingIndicator
216+
is RoktEvent.FirstPositiveEngagement -> com.mparticle.RoktEvent.FirstPositiveEngagement(
217+
event.id
218+
)
219+
is RoktEvent.PositiveEngagement -> com.mparticle.RoktEvent.PositiveEngagement(
220+
event.id
221+
)
222+
is RoktEvent.OfferEngagement -> com.mparticle.RoktEvent.OfferEngagement(event.id)
223+
is RoktEvent.OpenUrl -> com.mparticle.RoktEvent.OpenUrl(event.id, event.url)
224+
is RoktEvent.PlacementClosed -> com.mparticle.RoktEvent.PlacementClosed(event.id)
225+
is RoktEvent.PlacementCompleted -> com.mparticle.RoktEvent.PlacementCompleted(
226+
event.id
227+
)
228+
is RoktEvent.PlacementFailure -> com.mparticle.RoktEvent.PlacementFailure(event.id)
229+
is RoktEvent.PlacementInteractive -> com.mparticle.RoktEvent.PlacementInteractive(
230+
event.id
231+
)
232+
is RoktEvent.PlacementReady -> com.mparticle.RoktEvent.PlacementReady(event.id)
233+
is RoktEvent.CartItemInstantPurchase -> com.mparticle.RoktEvent.CartItemInstantPurchase(
234+
placementId = event.placementId,
235+
cartItemId = event.cartItemId,
236+
catalogItemId = event.catalogItemId,
237+
currency = event.currency,
238+
description = event.description,
239+
linkedProductId = event.linkedProductId,
240+
totalPrice = event.totalPrice,
241+
quantity = event.quantity,
242+
unitPrice = event.unitPrice
243+
)
244+
is RoktEvent.InitComplete -> com.mparticle.RoktEvent.InitComplete(event.success)
245+
}
246+
}
247+
}
248+
206249
override fun setWrapperSdkVersion(wrapperSdkVersion: WrapperSdkVersion) {
207250
val sdkFrameworkType = when (wrapperSdkVersion.sdk) {
208251
WrapperSdk.WrapperFlutter -> Flutter
@@ -325,7 +368,6 @@ class RoktKit : KitIntegration(), CommerceListener, IdentityListener, RoktListen
325368
}
326369
}
327370

328-
329371
fun PackageManager.getPackageInfoForApp(packageName: String, flags: Int = 0): PackageInfo =
330372
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
331373
getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(flags.toLong()))

0 commit comments

Comments
 (0)