From 75ba8f8c871fe60859e9e19cfaac9583495e077b Mon Sep 17 00:00:00 2001 From: York Wei <49313072+york-wei@users.noreply.github.com> Date: Fri, 24 May 2024 09:18:28 -0400 Subject: [PATCH] Feature flagged removal of beacon monitoring (#337) * send empty array for beacons to trigger exit events * gate beacon monitoring * update tests * gate beacon monitoring * update tests * Update build.gradle * Bump to 3.11.0 --------- Co-authored-by: Liam Meier --- sdk/build.gradle | 2 +- .../main/java/io/radar/sdk/RadarBeaconManager.kt | 12 ++++++++++++ .../java/io/radar/sdk/model/RadarFeatureSettings.kt | 11 ++++++++--- .../io/radar/sdk/model/RadarFeatureSettingsTest.kt | 13 ++++++++++++- 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/sdk/build.gradle b/sdk/build.gradle index 4ec035fb8..e68630311 100644 --- a/sdk/build.gradle +++ b/sdk/build.gradle @@ -10,7 +10,7 @@ apply plugin: "org.jetbrains.dokka" apply plugin: 'io.radar.mvnpublish' ext { - radarVersion = '3.10.0' + radarVersion = '3.11.0' } String buildNumber = ".${System.currentTimeMillis()}" diff --git a/sdk/src/main/java/io/radar/sdk/RadarBeaconManager.kt b/sdk/src/main/java/io/radar/sdk/RadarBeaconManager.kt index 18e6161fc..35f249e09 100644 --- a/sdk/src/main/java/io/radar/sdk/RadarBeaconManager.kt +++ b/sdk/src/main/java/io/radar/sdk/RadarBeaconManager.kt @@ -69,6 +69,10 @@ internal class RadarBeaconManager( } fun startMonitoringBeacons(beacons: Array) { + if (RadarSettings.getFeatureSettings(context).useRadarModifiedBeacon) { + return + } + if (!permissionsHelper.bluetoothPermissionsGranted(context)) { logger.d("Bluetooth permissions not granted") @@ -145,6 +149,10 @@ internal class RadarBeaconManager( } fun startMonitoringBeaconUUIDs(beaconUUIDs: Array?, beaconUIDs: Array?) { + if (RadarSettings.getFeatureSettings(context).useRadarModifiedBeacon) { + return + } + if (!permissionsHelper.bluetoothPermissionsGranted(context)) { logger.d("Bluetooth permissions not granted") @@ -248,6 +256,10 @@ internal class RadarBeaconManager( } fun stopMonitoringBeacons() { + if (RadarSettings.getFeatureSettings(context).useRadarModifiedBeacon) { + return + } + if (!permissionsHelper.bluetoothPermissionsGranted(context)) { return } diff --git a/sdk/src/main/java/io/radar/sdk/model/RadarFeatureSettings.kt b/sdk/src/main/java/io/radar/sdk/model/RadarFeatureSettings.kt index d4792f24e..eda8393e9 100644 --- a/sdk/src/main/java/io/radar/sdk/model/RadarFeatureSettings.kt +++ b/sdk/src/main/java/io/radar/sdk/model/RadarFeatureSettings.kt @@ -10,7 +10,8 @@ internal data class RadarFeatureSettings( val schedulerRequiresNetwork: Boolean, val usePersistence: Boolean, val extendFlushReplays: Boolean, - val useLogPersistence: Boolean + val useLogPersistence: Boolean, + val useRadarModifiedBeacon: Boolean ) { companion object { private const val MAX_CONCURRENT_JOBS = "maxConcurrentJobs" @@ -19,6 +20,7 @@ internal data class RadarFeatureSettings( private const val SCHEDULER_REQUIRES_NETWORK = "networkAny" private const val EXTEND_FLUSH_REPLAYS = "extendFlushReplays" private const val USE_LOG_PERSISTENCE = "useLogPersistence" + private const val USE_RADAR_MODIFIED_BEACON = "useRadarModifiedBeacon" fun fromJson(json: JSONObject?): RadarFeatureSettings { return if (json == null) { @@ -29,7 +31,8 @@ internal data class RadarFeatureSettings( json.optBoolean(SCHEDULER_REQUIRES_NETWORK), json.optBoolean(USE_PERSISTENCE), json.optBoolean(EXTEND_FLUSH_REPLAYS), - json.optBoolean(USE_LOG_PERSISTENCE) + json.optBoolean(USE_LOG_PERSISTENCE), + json.optBoolean(USE_RADAR_MODIFIED_BEACON) ) } } @@ -40,7 +43,8 @@ internal data class RadarFeatureSettings( false, // networkAny false, // usePersistence false, // extendFlushReplays - false // useLogPersistence + false, // useLogPersistence + false, // useRadarModifiedBeacon ) } } @@ -52,6 +56,7 @@ internal data class RadarFeatureSettings( putOpt(USE_PERSISTENCE, usePersistence) putOpt(EXTEND_FLUSH_REPLAYS, extendFlushReplays) putOpt(USE_LOG_PERSISTENCE, useLogPersistence) + putOpt(USE_RADAR_MODIFIED_BEACON, useRadarModifiedBeacon) } } } diff --git a/sdk/src/test/java/io/radar/sdk/model/RadarFeatureSettingsTest.kt b/sdk/src/test/java/io/radar/sdk/model/RadarFeatureSettingsTest.kt index b9c5e37ee..417bb2d32 100644 --- a/sdk/src/test/java/io/radar/sdk/model/RadarFeatureSettingsTest.kt +++ b/sdk/src/test/java/io/radar/sdk/model/RadarFeatureSettingsTest.kt @@ -20,6 +20,7 @@ class RadarFeatureSettingsTest { private var usePersistence = true private var extendFlushReplays = false private var useLogPersistence = true + private var useRadarModifiedBeacon = false private lateinit var jsonString: String @Before @@ -31,6 +32,7 @@ class RadarFeatureSettingsTest { "networkAny":$requiresNetwork, "maxConcurrentJobs":$maxConcurrentJobs, "usePersistence":$usePersistence, + "useRadarModifiedBeacon":$useRadarModifiedBeacon, "useLogPersistence":$useLogPersistence, "extendFlushReplays":$extendFlushReplays }""".trimIndent() @@ -40,7 +42,14 @@ class RadarFeatureSettingsTest { fun testToJson() { assertEquals( jsonString.removeWhitespace(), - RadarFeatureSettings(maxConcurrentJobs, requiresNetwork, usePersistence, extendFlushReplays, useLogPersistence).toJson().toString().removeWhitespace() + RadarFeatureSettings( + maxConcurrentJobs, + requiresNetwork, + usePersistence, + extendFlushReplays, + useLogPersistence, + useRadarModifiedBeacon + ).toJson().toString().removeWhitespace() ) } @@ -52,6 +61,7 @@ class RadarFeatureSettingsTest { assertEquals(usePersistence, settings.usePersistence) assertEquals(extendFlushReplays, settings.extendFlushReplays) assertEquals(useLogPersistence, settings.useLogPersistence) + assertEquals(useRadarModifiedBeacon, settings.useRadarModifiedBeacon) } @Test @@ -62,6 +72,7 @@ class RadarFeatureSettingsTest { assertFalse(settings.usePersistence) assertFalse(settings.extendFlushReplays) assertFalse(settings.useLogPersistence) + assertFalse(settings.useRadarModifiedBeacon) } private fun String.removeWhitespace(): String = replace("\\s".toRegex(), "")