From 0dcab3c6c6461d35309e37a5e6327bbdf732124e Mon Sep 17 00:00:00 2001 From: mhochsto <116495532+mhochsto@users.noreply.github.com> Date: Mon, 26 Aug 2024 12:23:15 +0200 Subject: [PATCH] feat: add missing signalize bridge functions (#36) --- .../abrevva/reactnative/AbrevvaBleModule.kt | 18 +++++++++++++++++- ios/ble/AbrevvaBle.m | 3 +++ ios/ble/AbrevvaBle.swift | 17 ++++++++++++++++- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/evva/xesar/abrevva/reactnative/AbrevvaBleModule.kt b/android/src/main/java/com/evva/xesar/abrevva/reactnative/AbrevvaBleModule.kt index 350b4da..d785a75 100644 --- a/android/src/main/java/com/evva/xesar/abrevva/reactnative/AbrevvaBleModule.kt +++ b/android/src/main/java/com/evva/xesar/abrevva/reactnative/AbrevvaBleModule.kt @@ -1,5 +1,6 @@ package com.evva.xesar.abrevva.reactnative +import android.annotation.SuppressLint import android.content.Intent import android.content.pm.PackageManager import android.net.Uri @@ -31,6 +32,20 @@ class AbrevvaBleModule(reactContext: ReactApplicationContext) : aliases = arrayOf() } + @SuppressLint("MissingPermission") + @ReactMethod + fun signalize(options: ReadableMap, promise: Promise) { + val deviceId = options.getString("deviceId") ?: "" + + manager.signalize(deviceId) { success: Boolean -> + if (success) { + promise.resolve("success") + } else { + promise.reject(Exception("signalize() failed")) + } + } + } + @ReactMethod fun initialize(options: ReadableMap, promise: Promise) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { @@ -261,7 +276,8 @@ class AbrevvaBleModule(reactContext: ReactApplicationContext) : getCharacteristic(options, promise) ?: return promise.reject("read(): bad characteristic") val value = - options.getString("value") ?: return promise.reject(Exception("write(): missing value for write")) + options.getString("value") + ?: return promise.reject(Exception("write(): missing value for write")) manager.write( deviceId, diff --git a/ios/ble/AbrevvaBle.m b/ios/ble/AbrevvaBle.m index 16cc30b..fca660d 100644 --- a/ios/ble/AbrevvaBle.m +++ b/ios/ble/AbrevvaBle.m @@ -73,6 +73,9 @@ @interface RCT_EXTERN_MODULE(AbrevvaBle, RCTEventEmitter) resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) +RCT_EXTERN_METHOD(signalize:(NSDictionary *)options + resolver:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)reject) + (BOOL)requiresMainQueueSetup { return NO; diff --git a/ios/ble/AbrevvaBle.swift b/ios/ble/AbrevvaBle.swift index 87838e7..c5eb673 100644 --- a/ios/ble/AbrevvaBle.swift +++ b/ios/ble/AbrevvaBle.swift @@ -127,7 +127,22 @@ public class AbrevvaBle: RCTEventEmitter { bleManager.stopScan() resolve("success") } - + @objc + func signalize(_ options: NSDictionary , resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) async { + guard let optionsSwift = options as? [String: Any] else { + return reject("Failed to convert NSDictionary to Swift dictionary", nil, nil) + } + + guard let deviceID = optionsSwift["deviceId"] as? String else { + return reject("signalize(): deviceId required", nil, nil) + } + guard let bleDevice = self.bleDeviceMap[deviceID] else { + return reject("signalize(): deviceId doesnt exist", nil, nil) + } + await bleManager?.signalize(bleDevice) + resolve("success") + + } @objc func connect(_ options: NSDictionary , resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) { guard self.getBleManager(reject) != nil else { return }