react-native-ble-manager 8.7.0 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +96 -47
  2. package/android/.gradle/7.4/checksums/checksums.lock +0 -0
  3. package/android/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock +0 -0
  4. package/android/.gradle/7.4/dependencies-accessors/gc.properties +0 -0
  5. package/android/.gradle/7.4/executionHistory/executionHistory.bin +0 -0
  6. package/android/.gradle/7.4/executionHistory/executionHistory.lock +0 -0
  7. package/android/.gradle/7.4/fileChanges/last-build.bin +0 -0
  8. package/android/.gradle/7.4/fileHashes/fileHashes.bin +0 -0
  9. package/android/.gradle/7.4/fileHashes/fileHashes.lock +0 -0
  10. package/android/.gradle/7.4/fileHashes/resourceHashesCache.bin +0 -0
  11. package/android/.gradle/7.4/gc.properties +0 -0
  12. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  13. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  14. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  15. package/android/.gradle/file-system.probe +0 -0
  16. package/android/.gradle/vcs-1/gc.properties +0 -0
  17. package/android/.idea/.name +1 -0
  18. package/android/.idea/compiler.xml +6 -0
  19. package/android/.idea/gradle.xml +18 -0
  20. package/android/.idea/jarRepositories.xml +40 -0
  21. package/android/.idea/misc.xml +10 -0
  22. package/android/.idea/vcs.xml +6 -0
  23. package/android/build.gradle +17 -17
  24. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  25. package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  26. package/android/gradle.properties +3 -1
  27. package/android/gradlew +234 -0
  28. package/android/gradlew.bat +89 -0
  29. package/android/local.properties +8 -0
  30. package/android/src/main/java/it/innove/BleManager.java +33 -17
  31. package/android/src/main/java/it/innove/LegacyScanManager.java +33 -28
  32. package/android/src/main/java/it/innove/LollipopPeripheral.java +66 -65
  33. package/android/src/main/java/it/innove/LollipopScanManager.java +52 -25
  34. package/android/src/main/java/it/innove/Peripheral.java +889 -837
  35. package/android/src/main/java/it/innove/ScanManager.java +24 -23
  36. package/dist/cjs/index.d.ts +147 -0
  37. package/dist/cjs/index.js +487 -0
  38. package/dist/cjs/index.js.map +1 -0
  39. package/dist/cjs/types.d.ts +311 -0
  40. package/dist/cjs/types.js +110 -0
  41. package/dist/cjs/types.js.map +1 -0
  42. package/dist/esm/index.d.ts +147 -0
  43. package/dist/esm/index.js +471 -0
  44. package/dist/esm/index.js.map +1 -0
  45. package/dist/esm/types.d.ts +311 -0
  46. package/dist/esm/types.js +107 -0
  47. package/dist/esm/types.js.map +1 -0
  48. package/ios/BleManager.m +87 -110
  49. package/ios/BleManager.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  50. package/package.json +31 -4
  51. package/src/index.ts +569 -0
  52. package/src/types.ts +336 -0
  53. package/.github/FUNDING.yml +0 -3
  54. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  55. package/BleManager.js +0 -427
  56. package/index.d.ts +0 -168
package/ios/BleManager.m CHANGED
@@ -82,21 +82,17 @@ bool hasListeners;
82
82
 
83
83
  - (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {
84
84
  NSString *key = [self keyForPeripheral: peripheral andCharacteristic:characteristic];
85
- RCTResponseSenderBlock readCallback = [readCallbacks objectForKey:key];
86
85
 
87
86
  if (error) {
88
87
  NSLog(@"Error %@ :%@", characteristic.UUID, error);
89
- if (readCallback != NULL) {
90
- readCallback(@[error, [NSNull null]]);
91
- [readCallbacks removeObjectForKey:key];
92
- }
88
+ [self invokeAndClearDictionary:readCallbacks withKey:key usingParameters:@[error, [NSNull null]]];
93
89
  return;
94
90
  }
95
91
  NSLog(@"Read value [%@]: (%lu) %@", characteristic.UUID, [characteristic.value length], characteristic.value);
96
-
97
- if (readCallback != NULL) {
98
- readCallback(@[[NSNull null], ([characteristic.value length] > 0) ? [characteristic.value toArray] : [NSNull null]]);
99
- [readCallbacks removeObjectForKey:key];
92
+
93
+ NSMutableArray* peripheralReadCallbacks = [readCallbacks objectForKey:key];
94
+ if (peripheralReadCallbacks != NULL) {
95
+ [self invokeAndClearDictionary:readCallbacks withKey:key usingParameters:@[[NSNull null], ([characteristic.value length] > 0) ? [characteristic.value toArray] : [NSNull null]]];
100
96
  } else {
101
97
  if (hasListeners) {
102
98
  [self sendEventWithName:@"BleManagerDidUpdateValueForCharacteristic" body:@{@"peripheral": peripheral.uuidAsString, @"characteristic":characteristic.UUID.UUIDString, @"service":characteristic.service.UUID.UUIDString, @"value": ([characteristic.value length] > 0) ? [characteristic.value toArray] : [NSNull null]}];
@@ -118,27 +114,25 @@ bool hasListeners;
118
114
  NSString *key = [self keyForPeripheral: peripheral andCharacteristic:characteristic];
119
115
 
120
116
  if (characteristic.isNotifying) {
121
- RCTResponseSenderBlock notificationCallback = [notificationCallbacks objectForKey:key];
122
- if (notificationCallback != nil) {
117
+ NSMutableArray* peripheralNotificationCallbacks = [notificationCallbacks objectForKey:key];
118
+ if (peripheralNotificationCallbacks != nil) {
123
119
  if (error) {
124
- notificationCallback(@[error]);
120
+ [self invokeAndClearDictionary:notificationCallbacks withKey:key usingParameters:@[error]];
125
121
  } else {
126
122
  NSLog(@"Notification began on %@", characteristic.UUID);
127
- notificationCallback(@[]);
123
+ [self invokeAndClearDictionary:notificationCallbacks withKey:key usingParameters:@[]];
128
124
  }
129
- [notificationCallbacks removeObjectForKey:key];
130
125
  }
131
126
  } else {
132
127
  // Notification has stopped
133
- RCTResponseSenderBlock stopNotificationCallback = [stopNotificationCallbacks objectForKey:key];
134
- if (stopNotificationCallback != nil) {
128
+ NSMutableArray* peripheralStopNotificationCallbacks = [stopNotificationCallbacks objectForKey:key];
129
+ if (peripheralStopNotificationCallbacks != nil) {
135
130
  if (error) {
136
- stopNotificationCallback(@[error]);
131
+ [self invokeAndClearDictionary:stopNotificationCallbacks withKey:key usingParameters:@[error]];
137
132
  } else {
138
133
  NSLog(@"Notification ended on %@", characteristic.UUID);
139
- stopNotificationCallback(@[]);
134
+ [self invokeAndClearDictionary:stopNotificationCallbacks withKey:key usingParameters:@[]];
140
135
  }
141
- [stopNotificationCallbacks removeObjectForKey:key];
142
136
  }
143
137
  }
144
138
  if (hasListeners) {
@@ -152,17 +146,17 @@ bool hasListeners;
152
146
  - (NSString *) centralManagerStateToString: (int)state
153
147
  {
154
148
  switch (state) {
155
- case CBCentralManagerStateUnknown:
149
+ case CBManagerStateUnknown:
156
150
  return @"unknown";
157
- case CBCentralManagerStateResetting:
151
+ case CBManagerStateResetting:
158
152
  return @"resetting";
159
- case CBCentralManagerStateUnsupported:
153
+ case CBManagerStateUnsupported:
160
154
  return @"unsupported";
161
- case CBCentralManagerStateUnauthorized:
155
+ case CBManagerStateUnauthorized:
162
156
  return @"unauthorized";
163
- case CBCentralManagerStatePoweredOff:
157
+ case CBManagerStatePoweredOff:
164
158
  return @"off";
165
- case CBCentralManagerStatePoweredOn:
159
+ case CBManagerStatePoweredOn:
166
160
  return @"on";
167
161
  default:
168
162
  return @"unknown";
@@ -192,12 +186,18 @@ bool hasListeners;
192
186
  - (NSString *) periphalManagerStateToString: (int)state
193
187
  {
194
188
  switch (state) {
195
- case CBPeripheralManagerStateUnknown:
196
- return @"Unknown";
197
- case CBPeripheralManagerStatePoweredOn:
198
- return @"PoweredOn";
199
- case CBPeripheralManagerStatePoweredOff:
200
- return @"PoweredOff";
189
+ case CBManagerStateUnknown:
190
+ return @"unknown";
191
+ case CBManagerStateResetting:
192
+ return @"resetting";
193
+ case CBManagerStateUnsupported:
194
+ return @"unsupported";
195
+ case CBManagerStateUnauthorized:
196
+ return @"unauthorized";
197
+ case CBManagerStatePoweredOff:
198
+ return @"off";
199
+ case CBManagerStatePoweredOn:
200
+ return @"on";
201
201
  default:
202
202
  return @"unknown";
203
203
  }
@@ -435,8 +435,8 @@ RCT_EXPORT_METHOD(connect:(NSString *)peripheralUUID callback:(nonnull RCTRespon
435
435
  }
436
436
  if (peripheral) {
437
437
  NSLog(@"Connecting to peripheral with UUID : %@", peripheralUUID);
438
-
439
- [connectCallbacks setObject:callback forKey:[peripheral uuidAsString]];
438
+
439
+ [self insertCallback:callback intoDictionary:connectCallbacks withKey:[peripheral uuidAsString]];
440
440
  [manager connectPeripheral:peripheral options:nil];
441
441
 
442
442
  } else {
@@ -475,10 +475,13 @@ RCT_EXPORT_METHOD(disconnect:(NSString *)peripheralUUID force:(BOOL)force callba
475
475
  }
476
476
  }
477
477
 
478
- RCT_EXPORT_METHOD(checkState)
478
+ RCT_EXPORT_METHOD(checkState:(nonnull RCTResponseSenderBlock)callback)
479
479
  {
480
480
  if (manager != nil){
481
481
  [self centralManagerDidUpdateState:self.manager];
482
+
483
+ NSString *stateName = [self centralManagerStateToString:self.manager.state];
484
+ callback(@[stateName]);
482
485
  }
483
486
  }
484
487
 
@@ -486,12 +489,8 @@ RCT_EXPORT_METHOD(checkState)
486
489
  {
487
490
  NSString *errorStr = [NSString stringWithFormat:@"Peripheral connection failure: %@. (%@)", peripheral, [error localizedDescription]];
488
491
  NSLog(@"%@", errorStr);
489
- RCTResponseSenderBlock connectCallback = [connectCallbacks valueForKey:[peripheral uuidAsString]];
490
-
491
- if (connectCallback) {
492
- connectCallback(@[errorStr]);
493
- [connectCallbacks removeObjectForKey:[peripheral uuidAsString]];
494
- }
492
+
493
+ [self invokeAndClearDictionary:connectCallbacks withKey:[peripheral uuidAsString] usingParameters:@[errorStr]];
495
494
  }
496
495
 
497
496
  RCT_EXPORT_METHOD(write:(NSString *)deviceUUID serviceUUID:(NSString*)serviceUUID characteristicUUID:(NSString*)characteristicUUID message:(NSArray*)message maxByteSize:(NSInteger)maxByteSize callback:(nonnull RCTResponseSenderBlock)callback)
@@ -518,8 +517,8 @@ RCT_EXPORT_METHOD(write:(NSString *)deviceUUID serviceUUID:(NSString*)serviceUUI
518
517
  CBCharacteristic *characteristic = [context characteristic];
519
518
 
520
519
  NSString *key = [self keyForPeripheral: peripheral andCharacteristic:characteristic];
521
- [writeCallbacks setObject:callback forKey:key];
522
-
520
+ [self insertCallback:callback intoDictionary:writeCallbacks withKey:key];
521
+
523
522
  RCTLogInfo(@"Message to write(%lu): %@ ", (unsigned long)[dataMessage length], [dataMessage hexadecimalString]);
524
523
  if ([dataMessage length] > maxByteSize){
525
524
  int dataLength = (int)dataMessage.length;
@@ -606,7 +605,7 @@ RCT_EXPORT_METHOD(read:(NSString *)deviceUUID serviceUUID:(NSString*)serviceUUID
606
605
  CBCharacteristic *characteristic = [context characteristic];
607
606
 
608
607
  NSString *key = [self keyForPeripheral: peripheral andCharacteristic:characteristic];
609
- [readCallbacks setObject:callback forKey:key];
608
+ [self insertCallback:callback intoDictionary:readCallbacks withKey:key];
610
609
 
611
610
  [peripheral readValueForCharacteristic:characteristic]; // callback sends value
612
611
  }
@@ -620,7 +619,7 @@ RCT_EXPORT_METHOD(readRSSI:(NSString *)deviceUUID callback:(nonnull RCTResponseS
620
619
  CBPeripheral *peripheral = [self findPeripheralByUUID:deviceUUID];
621
620
 
622
621
  if (peripheral && peripheral.state == CBPeripheralStateConnected) {
623
- [readRSSICallbacks setObject:callback forKey:[peripheral uuidAsString]];
622
+ [self insertCallback:callback intoDictionary:readRSSICallbacks withKey:[peripheral uuidAsString]];
624
623
  [peripheral readRSSI];
625
624
  } else {
626
625
  callback(@[@"Peripheral not found or not connected"]);
@@ -635,7 +634,7 @@ RCT_EXPORT_METHOD(retrieveServices:(NSString *)deviceUUID services:(NSArray<NSSt
635
634
  CBPeripheral *peripheral = [self findPeripheralByUUID:deviceUUID];
636
635
 
637
636
  if (peripheral && peripheral.state == CBPeripheralStateConnected) {
638
- [retrieveServicesCallbacks setObject:callback forKey:[peripheral uuidAsString]];
637
+ [self insertCallback:callback intoDictionary:retrieveServicesCallbacks withKey:[peripheral uuidAsString]];
639
638
 
640
639
  NSMutableArray<CBUUID *> *uuids = [NSMutableArray new];
641
640
  for ( NSString *string in services ) {
@@ -665,7 +664,7 @@ RCT_EXPORT_METHOD(startNotification:(NSString *)deviceUUID serviceUUID:(NSString
665
664
  CBCharacteristic *characteristic = [context characteristic];
666
665
 
667
666
  NSString *key = [self keyForPeripheral: peripheral andCharacteristic:characteristic];
668
- [notificationCallbacks setObject: callback forKey: key];
667
+ [self insertCallback:callback intoDictionary:notificationCallbacks withKey:key];
669
668
 
670
669
  [peripheral setNotifyValue:YES forCharacteristic:characteristic];
671
670
  }
@@ -684,7 +683,7 @@ RCT_EXPORT_METHOD(stopNotification:(NSString *)deviceUUID serviceUUID:(NSString*
684
683
 
685
684
  if ([characteristic isNotifying]){
686
685
  NSString *key = [self keyForPeripheral: peripheral andCharacteristic:characteristic];
687
- [stopNotificationCallbacks setObject: callback forKey: key];
686
+ [self insertCallback:callback intoDictionary:stopNotificationCallbacks withKey:key];
688
687
  [peripheral setNotifyValue:NO forCharacteristic:characteristic];
689
688
  NSLog(@"Characteristic stopped notifying");
690
689
  } else {
@@ -730,17 +729,15 @@ RCT_EXPORT_METHOD(requestMTU:(NSString *)deviceUUID mtu:(NSInteger)mtu callback:
730
729
  NSLog(@"didWrite");
731
730
 
732
731
  NSString *key = [self keyForPeripheral: peripheral andCharacteristic:characteristic];
733
- RCTResponseSenderBlock writeCallback = [writeCallbacks objectForKey:key];
732
+ NSMutableArray* peripheralWriteCallbacks = [writeCallbacks objectForKey:key];
734
733
 
735
- if (writeCallback) {
734
+ if (peripheralWriteCallbacks) {
736
735
  if (error) {
737
736
  NSLog(@"%@", error);
738
- [writeCallbacks removeObjectForKey:key];
739
- writeCallback(@[error.localizedDescription]);
737
+ [self invokeAndClearDictionary:writeCallbacks withKey:key usingParameters:@[error.localizedDescription]];
740
738
  } else {
741
739
  if ([writeQueue count] == 0) {
742
- [writeCallbacks removeObjectForKey:key];
743
- writeCallback(@[]);
740
+ [self invokeAndClearDictionary:writeCallbacks withKey:key usingParameters:@[]];
744
741
  }else{
745
742
  // Remove and write the queud message
746
743
  NSData *message = [writeQueue objectAtIndex:0];
@@ -750,18 +747,14 @@ RCT_EXPORT_METHOD(requestMTU:(NSString *)deviceUUID mtu:(NSInteger)mtu callback:
750
747
 
751
748
  }
752
749
  }
753
-
750
+
754
751
  }
755
752
 
756
753
 
757
754
  - (void)peripheral:(CBPeripheral*)peripheral didReadRSSI:(NSNumber*)rssi error:(NSError*)error {
758
755
  NSLog(@"didReadRSSI %@", rssi);
759
756
  NSString *key = [peripheral uuidAsString];
760
- RCTResponseSenderBlock readRSSICallback = [readRSSICallbacks objectForKey: key];
761
- if (readRSSICallback) {
762
- readRSSICallback(@[[NSNull null], [NSNumber numberWithInteger:[rssi integerValue]]]);
763
- [readRSSICallbacks removeObjectForKey:key];
764
- }
757
+ [self invokeAndClearDictionary:readRSSICallbacks withKey:key usingParameters:@[[NSNull null], [NSNumber numberWithInteger:[rssi integerValue]]]];
765
758
  }
766
759
 
767
760
 
@@ -776,14 +769,9 @@ RCT_EXPORT_METHOD(requestMTU:(NSString *)deviceUUID mtu:(NSInteger)mtu callback:
776
769
  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.002 * NSEC_PER_SEC),
777
770
  dispatch_get_main_queue(), ^(void){
778
771
  // didFailToConnectPeripheral should have been called already if not connected by now
779
-
780
- RCTResponseSenderBlock connectCallback = [connectCallbacks valueForKey:[peripheral uuidAsString]];
781
-
782
- if (connectCallback) {
783
- connectCallback(@[[NSNull null], [peripheral asDictionary]]);
784
- [connectCallbacks removeObjectForKey:[peripheral uuidAsString]];
785
- }
786
-
772
+
773
+ [self invokeAndClearDictionary:self->connectCallbacks withKey:[peripheral uuidAsString] usingParameters:@[[NSNull null], [peripheral asDictionary]]];
774
+
787
775
  if (hasListeners) {
788
776
  [self sendEventWithName:@"BleManagerConnectPeripheral" body:@{@"peripheral": [peripheral uuidAsString]}];
789
777
  }
@@ -802,66 +790,36 @@ RCT_EXPORT_METHOD(requestMTU:(NSString *)deviceUUID mtu:(NSInteger)mtu callback:
802
790
  NSString *peripheralUUIDString = [peripheral uuidAsString];
803
791
 
804
792
  NSString *errorStr = [NSString stringWithFormat:@"Peripheral did disconnect: %@", peripheralUUIDString];
805
-
806
- RCTResponseSenderBlock connectCallback = [connectCallbacks valueForKey:peripheralUUIDString];
807
- if (connectCallback) {
808
- connectCallback(@[errorStr]);
809
- [connectCallbacks removeObjectForKey:peripheralUUIDString];
810
- }
811
-
812
- RCTResponseSenderBlock readRSSICallback = [readRSSICallbacks valueForKey:peripheralUUIDString];
813
- if (readRSSICallback) {
814
- readRSSICallback(@[errorStr]);
815
- [readRSSICallbacks removeObjectForKey:peripheralUUIDString];
816
- }
817
-
818
- RCTResponseSenderBlock retrieveServicesCallback = [retrieveServicesCallbacks valueForKey:peripheralUUIDString];
819
- if (retrieveServicesCallback) {
820
- retrieveServicesCallback(@[errorStr]);
821
- [retrieveServicesCallbacks removeObjectForKey:peripheralUUIDString];
822
- }
793
+
794
+ [self invokeAndClearDictionary:connectCallbacks withKey:peripheralUUIDString usingParameters:@[errorStr]];
795
+ [self invokeAndClearDictionary:readRSSICallbacks withKey:peripheralUUIDString usingParameters:@[errorStr]];
796
+ [self invokeAndClearDictionary:retrieveServicesCallbacks withKey:peripheralUUIDString usingParameters:@[errorStr]];
823
797
 
824
798
  NSArray* ourReadCallbacks = readCallbacks.allKeys;
825
799
  for (id key in ourReadCallbacks) {
826
800
  if ([key hasPrefix:peripheralUUIDString]) {
827
- RCTResponseSenderBlock callback = [readCallbacks objectForKey:key];
828
- if (callback) {
829
- callback(@[errorStr]);
830
- [readCallbacks removeObjectForKey:key];
831
- }
801
+ [self invokeAndClearDictionary:readCallbacks withKey:key usingParameters:@[errorStr]];
832
802
  }
833
803
  }
834
804
 
835
805
  NSArray* ourWriteCallbacks = writeCallbacks.allKeys;
836
806
  for (id key in ourWriteCallbacks) {
837
807
  if ([key hasPrefix:peripheralUUIDString]) {
838
- RCTResponseSenderBlock callback = [writeCallbacks objectForKey:key];
839
- if (callback) {
840
- callback(@[errorStr]);
841
- [writeCallbacks removeObjectForKey:key];
842
- }
808
+ [self invokeAndClearDictionary:writeCallbacks withKey:key usingParameters:@[errorStr]];
843
809
  }
844
810
  }
845
811
 
846
812
  NSArray* ourNotificationCallbacks = notificationCallbacks.allKeys;
847
813
  for (id key in ourNotificationCallbacks) {
848
814
  if ([key hasPrefix:peripheralUUIDString]) {
849
- RCTResponseSenderBlock callback = [notificationCallbacks objectForKey:key];
850
- if (callback) {
851
- callback(@[errorStr]);
852
- [notificationCallbacks removeObjectForKey:key];
853
- }
815
+ [self invokeAndClearDictionary:notificationCallbacks withKey:key usingParameters:@[errorStr]];
854
816
  }
855
817
  }
856
818
 
857
819
  NSArray* ourStopNotificationsCallbacks = stopNotificationCallbacks.allKeys;
858
820
  for (id key in ourStopNotificationsCallbacks) {
859
821
  if ([key hasPrefix:peripheralUUIDString]) {
860
- RCTResponseSenderBlock callback = [stopNotificationCallbacks objectForKey:key];
861
- if (callback) {
862
- callback(@[errorStr]);
863
- [stopNotificationCallbacks removeObjectForKey:key];
864
- }
822
+ [self invokeAndClearDictionary:stopNotificationCallbacks withKey:key usingParameters:@[errorStr]];
865
823
  }
866
824
  }
867
825
 
@@ -908,11 +866,7 @@ RCT_EXPORT_METHOD(requestMTU:(NSString *)deviceUUID mtu:(NSInteger)mtu callback:
908
866
 
909
867
  if ([latch count] == 0) {
910
868
  // Call success callback for connect
911
- RCTResponseSenderBlock retrieveServiceCallback = [retrieveServicesCallbacks valueForKey:peripheralUUIDString];
912
- if (retrieveServiceCallback) {
913
- retrieveServiceCallback(@[[NSNull null], [peripheral asDictionary]]);
914
- [retrieveServicesCallbacks removeObjectForKey:peripheralUUIDString];
915
- }
869
+ [self invokeAndClearDictionary:retrieveServicesCallbacks withKey:peripheralUUIDString usingParameters:@[[NSNull null], [peripheral asDictionary]]];
916
870
  [retrieveServicesLatches removeObjectForKey:peripheralUUIDString];
917
871
  }
918
872
  }
@@ -1048,4 +1002,27 @@ RCT_EXPORT_METHOD(requestMTU:(NSString *)deviceUUID mtu:(NSInteger)mtu callback:
1048
1002
  return _instance;
1049
1003
  }
1050
1004
 
1005
+ -(void) insertCallback:(nonnull RCTResponseSenderBlock)callback intoDictionary:(NSMutableDictionary *)dictionary withKey:(NSString *)key
1006
+ {
1007
+ NSMutableArray* peripheralCallbacks = [dictionary objectForKey:key];
1008
+ if (!peripheralCallbacks) {
1009
+ peripheralCallbacks = [NSMutableArray array];
1010
+ [dictionary setObject:peripheralCallbacks forKey:key];
1011
+ }
1012
+
1013
+ [peripheralCallbacks addObject:callback];
1014
+ }
1015
+
1016
+ -(void) invokeAndClearDictionary:(NSMutableDictionary *)dictionary withKey:(NSString *)key usingParameters:(NSArray *)parameters
1017
+ {
1018
+ NSMutableArray* peripheralCallbacks = [dictionary objectForKey:key];
1019
+ if (peripheralCallbacks) {
1020
+ for (RCTResponseSenderBlock callback in peripheralCallbacks) {
1021
+ callback(parameters);
1022
+ }
1023
+
1024
+ [dictionary removeObjectForKey:key];
1025
+ }
1026
+ }
1027
+
1051
1028
  @end
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>IDEDidComputeMac32BitWarning</key>
6
+ <true/>
7
+ </dict>
8
+ </plist>
package/package.json CHANGED
@@ -1,9 +1,7 @@
1
1
  {
2
2
  "name": "react-native-ble-manager",
3
- "version": "8.7.0",
3
+ "version": "9.0.0",
4
4
  "description": "A BLE module for react native.",
5
- "main": "BleManager",
6
- "types": "./index.d.ts",
7
5
  "repository": {
8
6
  "type": "git",
9
7
  "url": "https://github.com/innoveit/react-native-ble-manager.git"
@@ -24,8 +22,37 @@
24
22
  "name": "Innove",
25
23
  "url": "https://github.com/innoveit"
26
24
  },
25
+ "main": "dist/cjs/index.js",
26
+ "types": "dist/esm/index.d.ts",
27
+ "module": "dist/esm/index.js",
28
+ "react-native": "src/index.ts",
29
+ "files": [
30
+ "/dist",
31
+ "/src",
32
+ "/android",
33
+ "!/android/build",
34
+ "/ios",
35
+ "/*.podspec"
36
+ ],
27
37
  "scripts": {
28
38
  "version": "git add -A",
29
- "postversion": "git push && git push --tags"
39
+ "clean": "rimraf dist",
40
+ "type:check": "tsc -p tsconfig.json --noEmit",
41
+ "prebuild": "npm run clean",
42
+ "build:cjs": "tsc --module commonjs --outDir dist/cjs",
43
+ "build:esm": "tsc --outDir dist/esm",
44
+ "build": "npm run build:esm && npm run build:cjs",
45
+ "watch": "npm run build --watch",
46
+ "prepare": "npm run build",
47
+ "preversion": "npm run build",
48
+ "postversion": "git push --follow-tags"
49
+ },
50
+ "peerDependencies": {
51
+ "react-native": ">=0.60.0"
52
+ },
53
+ "devDependencies": {
54
+ "react-native": "0.71.0",
55
+ "rimraf": "4.1.2",
56
+ "typescript": "4.9.5"
30
57
  }
31
58
  }