From 8cdf9f3073067064226cde7524940534465c25b3 Mon Sep 17 00:00:00 2001 From: Kacper Cyranowski Date: Mon, 24 Jun 2024 21:52:39 +0200 Subject: [PATCH] feat: issue-863 implement invalidate to better refresh experience --- .../java/com/bleplx/adapter/BleModule.java | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/android/src/main/java/com/bleplx/adapter/BleModule.java b/android/src/main/java/com/bleplx/adapter/BleModule.java index 2461ab45..0fbed672 100755 --- a/android/src/main/java/com/bleplx/adapter/BleModule.java +++ b/android/src/main/java/com/bleplx/adapter/BleModule.java @@ -35,6 +35,7 @@ import com.bleplx.adapter.utils.UUIDConverter; import com.bleplx.adapter.utils.mapper.RxBleDeviceToDeviceMapper; import com.bleplx.adapter.utils.mapper.RxScanResultToScanResultMapper; +import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.polidea.rxandroidble2.NotificationSetupMode; import com.polidea.rxandroidble2.RxBleAdapterStateObservable; import com.polidea.rxandroidble2.RxBleClient; @@ -56,7 +57,8 @@ import io.reactivex.functions.Action; import io.reactivex.schedulers.Schedulers; -public class BleModule implements BleAdapter { +public class BleModule extends ReactContextBaseJavaModule implements BleAdapter { + public static final String NAME = "Ble"; private final ErrorConverter errorConverter = new ErrorConverter(); @@ -99,6 +101,12 @@ public class BleModule implements BleAdapter { private int currentLogLevel = RxBleLog.NONE; + @Override + @NonNull + public String getName() { + return NAME; + } + public BleModule(Context context) { this.context = context; bluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE); @@ -118,6 +126,15 @@ public void createClient(String restoreStateIdentifier, } } + private void clearActiveConnections() { + pendingTransactions.removeAllSubscriptions(); + connectingDevices.removeAllSubscriptions(); + connectedDevices.clear(); + activeConnections.clear(); + discoveredDevices.clear(); + + } + @Override public void destroyClient() { if (adapterStateChangesSubscription != null) { @@ -128,15 +145,10 @@ public void destroyClient() { scanSubscription.dispose(); scanSubscription = null; } - pendingTransactions.removeAllSubscriptions(); - connectingDevices.removeAllSubscriptions(); - + clearActiveConnections(); discoveredServices.clear(); discoveredCharacteristics.clear(); discoveredDescriptors.clear(); - connectedDevices.clear(); - activeConnections.clear(); - discoveredDevices.clear(); rxBleClient = null; IdGenerator.clear(); @@ -1566,4 +1578,9 @@ private void cleanServicesAndCharacteristicsForDevice(@NonNull Device device) { } } } + + @Override + public void invalidate() { + clearActiveConnections(); + } }