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
21 changes: 17 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
buildscript {
ext.kotlin_version = '1.8.10'
ext.kotlin_version = '2.0.20'
if (!project.hasProperty('version') || project.version.equals('unspecified')) {
project.version = '+'
}
Expand All @@ -9,16 +9,17 @@ buildscript {
mavenLocal()
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:7.4.1'
classpath 'com.android.tools.build:gradle:8.1.4'
classpath 'com.mparticle:android-kit-plugin:' + project.version
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

plugins {
id "org.sonarqube" version "3.5.0.2730"
id "org.jlleitschuh.gradle.ktlint" version "11.2.0"
id "org.jlleitschuh.gradle.ktlint" version "13.0.0"
}

sonarqube {
Expand All @@ -30,8 +31,8 @@ sonarqube {
}

apply plugin: 'org.jlleitschuh.gradle.ktlint'
apply plugin: 'com.mparticle.kit'
apply plugin: 'kotlin-android'
apply plugin: 'com.mparticle.kit'

allprojects {
repositories {
Expand All @@ -45,14 +46,26 @@ allprojects {
}

android {
namespace 'com.mparticle.kits.radar'
buildFeatures {
buildConfig = true
}
defaultConfig {
minSdkVersion 16
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = '17'
}
testOptions {
unitTests {
all {
// configure the test JVM arguments
jvmArgs '-noverify'
jvmArgs += ['--add-opens', 'java.base/java.lang=ALL-UNNAMED']
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
6 changes: 2 additions & 4 deletions src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:tools="http://schemas.android.com/tools"
package="com.mparticle.kits.radar">

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-sdk tools:overrideLibrary="io.radar.sdk"/>

</manifest>
60 changes: 33 additions & 27 deletions src/main/kotlin/com/mparticle/kits/RadarKit.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,38 +21,45 @@ import io.radar.sdk.Radar.trackOnce
import io.radar.sdk.RadarTrackingOptions
import org.json.JSONException
import org.json.JSONObject
import java.util.*
import java.util.LinkedList

class RadarKit : KitIntegration(), ApplicationStateListener, IdentityListener {
class RadarKit :
KitIntegration(),
ApplicationStateListener,
IdentityListener {
@JvmField
var mRunAutomatically = true

private fun tryStartTracking() {
val hasGrantedPermissions = ActivityCompat.checkSelfPermission(
context,
Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED
val hasGrantedPermissions =
ActivityCompat.checkSelfPermission(
context,
Manifest.permission.ACCESS_FINE_LOCATION,
) == PackageManager.PERMISSION_GRANTED
if (hasGrantedPermissions) {
startTracking(RadarTrackingOptions.EFFICIENT)
}
}

private fun tryTrackOnce() {
val hasGrantedPermissions = ActivityCompat.checkSelfPermission(
context,
Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED
val hasGrantedPermissions =
ActivityCompat.checkSelfPermission(
context,
Manifest.permission.ACCESS_FINE_LOCATION,
) == PackageManager.PERMISSION_GRANTED
if (hasGrantedPermissions) {
trackOnce(null as Radar.RadarTrackCallback?)
}
}

override fun onKitCreate(
settings: Map<String, String>,
context: Context
context: Context,
): List<ReportingMessage> {
val publishableKey = settings[KEY_PUBLISHABLE_KEY]
mRunAutomatically =
settings.containsKey(KEY_RUN_AUTOMATICALLY) && settings[KEY_RUN_AUTOMATICALLY].toBoolean()
settings.containsKey(KEY_RUN_AUTOMATICALLY) &&
settings[KEY_RUN_AUTOMATICALLY].toBoolean()
initialize(context, publishableKey, null)
setAdIdEnabled(true)
val user = currentUser
Expand All @@ -64,7 +71,7 @@ class RadarKit : KitIntegration(), ApplicationStateListener, IdentityListener {
try {
radarMetadata.put(
"mParticleId",
user.id.toString()
user.id.toString(),
)
} catch (e: JSONException) {
e.printStackTrace()
Expand All @@ -82,8 +89,8 @@ class RadarKit : KitIntegration(), ApplicationStateListener, IdentityListener {
this,
ReportingMessage.MessageType.APP_STATE_TRANSITION,
System.currentTimeMillis(),
null
)
null,
),
)
return messageList
}
Expand All @@ -99,19 +106,18 @@ class RadarKit : KitIntegration(), ApplicationStateListener, IdentityListener {
}

override fun onApplicationBackground() {}

fun setUserAndTrack(
user: MParticleUser?,
currentRadarId: String?,
currentMetadata: JSONObject?
): Boolean {
return setUserAndTrack(user, currentRadarId, currentMetadata, false)
}
currentMetadata: JSONObject?,
): Boolean = setUserAndTrack(user, currentRadarId, currentMetadata, false)

fun setUserAndTrack(
user: MParticleUser?,
currentRadarId: String?,
currentMetadata: JSONObject?,
unitTesting: Boolean
unitTesting: Boolean,
): Boolean {
if (user == null) {
return false
Expand Down Expand Up @@ -156,33 +162,34 @@ class RadarKit : KitIntegration(), ApplicationStateListener, IdentityListener {

override fun onIdentifyCompleted(
mParticleUser: MParticleUser,
filteredIdentityApiRequest: FilteredIdentityApiRequest
filteredIdentityApiRequest: FilteredIdentityApiRequest,
) {
setUserAndTrack(mParticleUser, getUserId(), getMetadata())
}

override fun onLoginCompleted(
mParticleUser: MParticleUser,
filteredIdentityApiRequest: FilteredIdentityApiRequest
filteredIdentityApiRequest: FilteredIdentityApiRequest,
) {
setUserAndTrack(mParticleUser, getUserId(), getMetadata())
}

override fun onLogoutCompleted(
mParticleUser: MParticleUser,
filteredIdentityApiRequest: FilteredIdentityApiRequest
filteredIdentityApiRequest: FilteredIdentityApiRequest,
) {
setUserAndTrack(mParticleUser, getUserId(), getMetadata())
}

override fun onModifyCompleted(
mParticleUser: MParticleUser,
filteredIdentityApiRequest: FilteredIdentityApiRequest
filteredIdentityApiRequest: FilteredIdentityApiRequest,
) {
setUserAndTrack(mParticleUser, getUserId(), getMetadata())
}

override fun onUserIdentified(mParticleUser: MParticleUser) {}

override fun setOptOut(optedOut: Boolean): List<ReportingMessage> {
if (mRunAutomatically) {
stopTracking()
Expand All @@ -193,8 +200,8 @@ class RadarKit : KitIntegration(), ApplicationStateListener, IdentityListener {
this,
ReportingMessage.MessageType.OPT_OUT,
System.currentTimeMillis(),
null
)
null,
),
)
return messageList
}
Expand All @@ -204,6 +211,5 @@ class RadarKit : KitIntegration(), ApplicationStateListener, IdentityListener {
private const val KEY_RUN_AUTOMATICALLY = "runAutomatically"
private const val M_PARTICLE_ID = "mParticleId"
const val KIT_NAME = "RadarKit"

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ import android.content.Context
import com.mparticle.MParticle.IdentityType
import com.mparticle.MParticleOptions
import com.mparticle.identity.MParticleUser
import com.mparticle.kits.KitIntegration
import com.mparticle.kits.KitIntegrationFactory
import org.json.JSONObject
import org.junit.Assert
import org.junit.Test
import org.mockito.Mockito
import java.util.HashMap

class RadarKitTests {
private val kit: KitIntegration
Expand Down