From e6671c754f67a8a3874c1f6adda94a37a8adf103 Mon Sep 17 00:00:00 2001 From: Colm Harte Date: Tue, 16 Feb 2021 10:28:38 +0000 Subject: [PATCH] Bluetooth fix (#71) * Fixing isEnabled check when bluetooth disabled * Fixing isEnabled call after bluetooth status event * Adding param * Version bump * Adding variable --- .../tracing/ExposureNotificationModule.java | 2 +- .../src/main/java/ie/gov/tracing/Tracing.kt | 25 ++++++++++++++----- package.json | 2 +- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/android/src/main/java/ie/gov/tracing/ExposureNotificationModule.java b/android/src/main/java/ie/gov/tracing/ExposureNotificationModule.java index a7a8229..4b8059a 100644 --- a/android/src/main/java/ie/gov/tracing/ExposureNotificationModule.java +++ b/android/src/main/java/ie/gov/tracing/ExposureNotificationModule.java @@ -193,7 +193,7 @@ public void getConfigData(Promise promise) { @ReactMethod public void status(Promise promise) { if(nearbyNotSupported()) { - Tracing.setExposureStatus("unavailable", "apiError: " + apiError); + Tracing.setExposureStatus("unavailable", "apiError: " + apiError, false); } Tracing.getExposureStatus(promise); } diff --git a/android/src/main/java/ie/gov/tracing/Tracing.kt b/android/src/main/java/ie/gov/tracing/Tracing.kt index a3edb61..bd49304 100644 --- a/android/src/main/java/ie/gov/tracing/Tracing.kt +++ b/android/src/main/java/ie/gov/tracing/Tracing.kt @@ -37,6 +37,8 @@ import ie.gov.tracing.storage.SharedPrefs import ie.gov.tracing.storage.SharedPrefs.Companion.getLong import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking +import java.util.* +import kotlin.concurrent.schedule object Tracing { class Listener: ActivityEventListener { @@ -126,7 +128,7 @@ object Tracing { } Events.raiseEvent(Events.INFO, "bleStatusUpdate - $intent.action, $doesSupportENS") if (doesSupportENS) { - Tracing.setExposureStatus(newStatus, newExposureDisabledReason) + Tracing.setExposureStatus(newStatus, newExposureDisabledReason, true) } } } @@ -174,7 +176,7 @@ object Tracing { var startPromise: Promise? = null @JvmStatic - fun setExposureStatus(status: String, reason: String = "") { + fun setExposureStatus(status: String, reason: String = "", scheduleCheck: Boolean = false) { var changed = false if (exposureStatus != status) { exposureStatus = status @@ -185,8 +187,14 @@ object Tracing { changed = true } if (changed) { - Events.raiseEvent(Events.ON_STATUS_CHANGED, getExposureStatus(null)) - } + if (scheduleCheck) { + Timer("DelayedENSCheck", false).schedule(300) { + Events.raiseEvent(Events.ON_STATUS_CHANGED, getExposureStatus(null)) + } + } else { + Events.raiseEvent(Events.ON_STATUS_CHANGED, getExposureStatus(null)) + } + } } @JvmStatic @@ -768,8 +776,13 @@ object Tracing { fun getExposureStatus(promise: Promise? = null): ReadableMap = runBlocking { val result: WritableMap = Arguments.createMap() val typeData: WritableArray = Arguments.createArray() - - val enabled = ExposureNotificationHelper.isEnabled().await() + var enabled = false + + try { + enabled = ExposureNotificationHelper.isEnabled().await() + } catch(ex: Exception) { + Events.raiseError("Error reading ENS status", ex) + } val isPaused = SharedPrefs.getBoolean("servicePaused", context) if (doesSupportENS && isPaused && !enabled) { exposureStatus = EXPOSURE_STATUS_DISABLED diff --git a/package.json b/package.json index a693629..7fedddb 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "react-native-exposure-notification-service", "title": "React Native Exposure Notification Service", - "version": "1.3.0", + "version": "1.3.1", "description": "React native module providing a common interface to Apple/Google's Exposure Notification APIs", "main": "dist/index.js", "files": [