react-native-radar 3.5.11 → 3.7.3

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.
@@ -18,7 +18,7 @@ android {
18
18
  minSdkVersion 16
19
19
  targetSdkVersion 31
20
20
  versionCode 1
21
- versionName '3.5.11'
21
+ versionName '3.7.2'
22
22
  }
23
23
  lintOptions {
24
24
  abortOnError false
@@ -45,5 +45,5 @@ repositories {
45
45
 
46
46
  dependencies {
47
47
  api 'com.facebook.react:react-native:+'
48
- api 'io.radar:sdk:3.5.12'
48
+ api 'io.radar:sdk:3.7.2'
49
49
  }
@@ -47,9 +47,29 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
47
47
  private static final int PERMISSIONS_REQUEST_CODE = 20160525; // random request code (Radar's birthday!)
48
48
  private Promise mPermissionsRequestPromise;
49
49
 
50
+ private RNRadarReceiver receiver;
51
+ private int listenerCount = 0;
52
+
50
53
  public RNRadarModule(ReactApplicationContext reactContext) {
51
54
  super(reactContext);
52
- Radar.setReceiver(new RNRadarReceiver());
55
+ receiver = new RNRadarReceiver();
56
+ }
57
+
58
+ @ReactMethod
59
+ public void addListener(String eventName) {
60
+ if (listenerCount == 0) {
61
+ receiver.hasListeners = true;
62
+ }
63
+
64
+ listenerCount += 1;
65
+ }
66
+
67
+ @ReactMethod
68
+ public void removeListeners(Integer count) {
69
+ listenerCount -= count;
70
+ if (listenerCount == 0) {
71
+ receiver.hasListeners = false;
72
+ }
53
73
  }
54
74
 
55
75
  @Override
@@ -60,6 +80,7 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
60
80
  @ReactMethod
61
81
  public void initialize(String publishableKey) {
62
82
  Radar.initialize(getReactApplicationContext(), publishableKey);
83
+ Radar.setReceiver(receiver);
63
84
  }
64
85
 
65
86
  @ReactMethod
@@ -127,11 +148,6 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
127
148
  Radar.setAnonymousTrackingEnabled(enabled);
128
149
  }
129
150
 
130
- @ReactMethod
131
- public void setAdIdEnabled(boolean enabled) {
132
- Radar.setAdIdEnabled(enabled);
133
- }
134
-
135
151
  @ReactMethod
136
152
  public void getPermissionsStatus(final Promise promise) {
137
153
  if (promise == null) {
@@ -305,6 +321,40 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
305
321
  }
306
322
  }
307
323
 
324
+ @ReactMethod
325
+ public void trackVerified(final Promise promise) {
326
+ Radar.trackVerified(new Radar.RadarTrackCallback() {
327
+ @Override
328
+ public void onComplete(@NonNull Radar.RadarStatus status, @Nullable Location location, @Nullable RadarEvent[] events, @Nullable RadarUser user) {
329
+ if (promise == null) {
330
+ return;
331
+ }
332
+
333
+ try {
334
+ if (status == Radar.RadarStatus.SUCCESS) {
335
+ WritableMap map = Arguments.createMap();
336
+ map.putString("status", status.toString());
337
+ if (location != null) {
338
+ map.putMap("location", RNRadarUtils.mapForJson(Radar.jsonForLocation(location)));
339
+ }
340
+ if (events != null) {
341
+ map.putArray("events", RNRadarUtils.arrayForJson(RadarEvent.toJson(events)));
342
+ }
343
+ if (user != null) {
344
+ map.putMap("user", RNRadarUtils.mapForJson(user.toJson()));
345
+ }
346
+ promise.resolve(map);
347
+ } else {
348
+ promise.reject(status.toString(), status.toString());
349
+ }
350
+ } catch (JSONException e) {
351
+ Log.e(TAG, "JSONException", e);
352
+ promise.reject(Radar.RadarStatus.ERROR_SERVER.toString(), Radar.RadarStatus.ERROR_SERVER.toString());
353
+ }
354
+ }
355
+ });
356
+ }
357
+
308
358
  @ReactMethod
309
359
  public void startTrackingEfficient() {
310
360
  Radar.startTracking(RadarTrackingOptions.EFFICIENT);
@@ -1093,27 +1143,31 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
1093
1143
  }
1094
1144
 
1095
1145
  @ReactMethod
1096
- public void sendEvent(String customType, ReadableMap metadata, final Promise promise) throws JSONException {
1146
+ public void logConversion(ReadableMap optionsMap, final Promise promise) throws JSONException {
1097
1147
  if (promise == null) {
1098
1148
  return;
1099
1149
  }
1150
+
1151
+ if (!optionsMap.hasKey("name")) {
1152
+ promise.reject(Radar.RadarStatus.ERROR_BAD_REQUEST.toString(), Radar.RadarStatus.ERROR_BAD_REQUEST.toString());
1153
+
1154
+ return;
1155
+ }
1156
+
1157
+ String name = optionsMap.getString("name");
1158
+ Double revenue = optionsMap.hasKey("revenue") ? new Double(optionsMap.getDouble("revenue")) : null;
1159
+ ReadableMap metadata = optionsMap.hasKey("metadata") ? optionsMap.getMap("metadata") : null;
1100
1160
 
1101
1161
  JSONObject metadataObj = RNRadarUtils.jsonForMap(metadata);
1102
- Radar.sendEvent(customType, metadataObj, new Radar.RadarSendEventCallback() {
1162
+ Radar.RadarLogConversionCallback callback = new Radar.RadarLogConversionCallback() {
1103
1163
  @Override
1104
- public void onComplete(@NonNull Radar.RadarStatus status, @Nullable Location location, @Nullable RadarEvent[] events, @Nullable RadarUser user) {
1164
+ public void onComplete(@NonNull Radar.RadarStatus status, @Nullable RadarEvent event) {
1105
1165
  try {
1106
1166
  if (status == Radar.RadarStatus.SUCCESS) {
1107
1167
  WritableMap map = Arguments.createMap();
1108
1168
  map.putString("status", status.toString());
1109
- if (location != null) {
1110
- map.putMap("location", RNRadarUtils.mapForJson(Radar.jsonForLocation(location)));
1111
- }
1112
- if (events != null) {
1113
- map.putArray("events", RNRadarUtils.arrayForJson(RadarEvent.toJson(events)));
1114
- }
1115
- if (user != null) {
1116
- map.putMap("user", RNRadarUtils.mapForJson(user.toJson()));
1169
+ if (event != null) {
1170
+ map.putMap("event", RNRadarUtils.mapForJson(event.toJson()));
1117
1171
  }
1118
1172
  promise.resolve(map);
1119
1173
  } else {
@@ -1124,7 +1178,13 @@ public class RNRadarModule extends ReactContextBaseJavaModule implements Permiss
1124
1178
  promise.reject(Radar.RadarStatus.ERROR_SERVER.toString(), Radar.RadarStatus.ERROR_SERVER.toString());
1125
1179
  }
1126
1180
  }
1127
- });
1181
+ };
1182
+
1183
+ if (revenue != null) {
1184
+ Radar.logConversion(name, revenue, metadataObj, callback);
1185
+ } else {
1186
+ Radar.logConversion(name, metadataObj, callback);
1187
+ }
1128
1188
  }
1129
1189
 
1130
1190
  }
@@ -12,6 +12,7 @@ import com.facebook.react.ReactInstanceManager;
12
12
  import com.facebook.react.ReactNativeHost;
13
13
  import com.facebook.react.bridge.Arguments;
14
14
  import com.facebook.react.bridge.ReactContext;
15
+ import com.facebook.react.bridge.ReactMethod;
15
16
  import com.facebook.react.bridge.WritableMap;
16
17
  import com.facebook.react.modules.core.DeviceEventManagerModule;
17
18
 
@@ -25,11 +26,12 @@ public class RNRadarReceiver extends RadarReceiver {
25
26
 
26
27
  private ReactNativeHost reactNativeHost;
27
28
  private static final String TAG = "RNRadarReceiver";
29
+ protected boolean hasListeners = false;
28
30
 
29
31
  private void sendEvent(final String eventName, final Object data) {
30
32
  final ReactInstanceManager reactInstanceManager = reactNativeHost.getReactInstanceManager();
31
33
  ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
32
- if (reactContext != null) {
34
+ if (reactContext != null && hasListeners) {
33
35
  reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName, data);
34
36
  }
35
37
  }
@@ -1 +1 @@
1
- github "radarlabs/radar-sdk-ios" "3.5.12"
1
+ github "radarlabs/radar-sdk-ios" "3.7.7"
package/ios/RNRadar.m CHANGED
@@ -139,10 +139,6 @@ RCT_EXPORT_METHOD(setAnonymousTrackingEnabled:(BOOL)enabled) {
139
139
  [Radar setAnonymousTrackingEnabled:enabled];
140
140
  }
141
141
 
142
- RCT_EXPORT_METHOD(setAdIdEnabled:(BOOL)enabled) {
143
- [Radar setAdIdEnabled:enabled];
144
- }
145
-
146
142
  RCT_REMAP_METHOD(getPermissionsStatus, getPermissionsStatusWithResolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
147
143
  CLAuthorizationStatus status = [CLLocationManager authorizationStatus];
148
144
  NSString *statusStr;
@@ -287,6 +283,34 @@ RCT_EXPORT_METHOD(trackOnce:(NSDictionary *)optionsDict resolve:(RCTPromiseResol
287
283
  }
288
284
  }
289
285
 
286
+ RCT_EXPORT_METHOD(trackVerified:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
287
+ __block RCTPromiseResolveBlock resolver = resolve;
288
+ __block RCTPromiseRejectBlock rejecter = reject;
289
+
290
+ RadarTrackCompletionHandler completionHandler = ^(RadarStatus status, CLLocation * _Nullable location, NSArray<RadarEvent *> * _Nullable events, RadarUser * _Nullable user) {
291
+ if (status == RadarStatusSuccess && resolver) {
292
+ NSMutableDictionary *dict = [NSMutableDictionary new];
293
+ [dict setObject:[Radar stringForStatus:status] forKey:@"status"];
294
+ if (location) {
295
+ [dict setObject:[Radar dictionaryForLocation:location] forKey:@"location"];
296
+ }
297
+ if (events) {
298
+ [dict setObject:[RadarEvent arrayForEvents:events] forKey:@"events"];
299
+ }
300
+ if (user) {
301
+ [dict setObject:[user dictionaryValue] forKey:@"user"];
302
+ }
303
+ resolver(dict);
304
+ } else if (rejecter) {
305
+ rejecter([Radar stringForStatus:status], [Radar stringForStatus:status], nil);
306
+ }
307
+ resolver = nil;
308
+ rejecter = nil;
309
+ };
310
+
311
+ [Radar trackVerifiedWithCompletionHandler:completionHandler];
312
+ }
313
+
290
314
 
291
315
  RCT_EXPORT_METHOD(startTrackingEfficient) {
292
316
  [Radar startTrackingWithOptions:RadarTrackingOptions.presetEfficient];
@@ -969,22 +993,35 @@ RCT_EXPORT_METHOD(getMatrix:(NSDictionary *)optionsDict resolve:(RCTPromiseResol
969
993
  }];
970
994
  }
971
995
 
972
- RCT_EXPORT_METHOD(sendEvent:(NSString*) customType metadata:(NSDictionary *)metadata resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
996
+ RCT_EXPORT_METHOD(logConversion:(NSDictionary *)optionsDict resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
997
+ if (optionsDict == nil) {
998
+ if (reject) {
999
+ reject([Radar stringForStatus:RadarStatusErrorBadRequest], [Radar stringForStatus:RadarStatusErrorBadRequest], nil);
1000
+ }
1001
+
1002
+ return;
1003
+ }
1004
+
1005
+ NSString *name = optionsDict[@"name"];
1006
+ NSNumber *revenue = optionsDict[@"revenue"];
1007
+ NSDictionary *metadata = optionsDict[@"metadata"];
1008
+ if (name == nil) {
1009
+ if (reject) {
1010
+ reject([Radar stringForStatus:RadarStatusErrorBadRequest], [Radar stringForStatus:RadarStatusErrorBadRequest], nil);
1011
+ }
1012
+
1013
+ return;
1014
+ }
1015
+
973
1016
  __block RCTPromiseResolveBlock resolver = resolve;
974
1017
  __block RCTPromiseRejectBlock rejecter = reject;
975
-
976
- [Radar sendEvent:customType withMetadata:metadata completionHandler:^(RadarStatus status, CLLocation * _Nullable location, NSArray<RadarEvent *> * _Nullable events, RadarUser * _Nullable user) {
1018
+
1019
+ RadarLogConversionCompletionHandler completionHandler = ^(RadarStatus status, RadarEvent * _Nullable event) {
977
1020
  if (status == RadarStatusSuccess && resolver) {
978
1021
  NSMutableDictionary *dict = [NSMutableDictionary new];
979
1022
  [dict setObject:[Radar stringForStatus:status] forKey:@"status"];
980
- if (location) {
981
- [dict setObject:[Radar dictionaryForLocation:location] forKey:@"location"];
982
- }
983
- if (events) {
984
- [dict setObject:[RadarEvent arrayForEvents:events] forKey:@"events"];
985
- }
986
- if (user) {
987
- [dict setObject:[user dictionaryValue] forKey:@"user"];
1023
+ if (event) {
1024
+ [dict setObject:[event dictionaryValue] forKey:@"event"];
988
1025
  }
989
1026
  resolver(dict);
990
1027
  } else if (rejecter) {
@@ -992,6 +1029,12 @@ RCT_EXPORT_METHOD(sendEvent:(NSString*) customType metadata:(NSDictionary *)meta
992
1029
  }
993
1030
  resolver = nil;
994
1031
  rejecter = nil;
995
- }];
1032
+ };
1033
+
1034
+ if (revenue) {
1035
+ [Radar logConversionWithName:name metadata:metadata completionHandler:completionHandler];
1036
+ } else {
1037
+ [Radar logConversionWithName:name revenue:revenue metadata:metadata completionHandler:completionHandler];
1038
+ }
996
1039
  }
997
1040
  @end
@@ -42,10 +42,6 @@ const setAnonymousTrackingEnabled = (enabled) => (
42
42
  NativeModules.RNRadar.setAnonymousTrackingEnabled(enabled)
43
43
  )
44
44
 
45
- const setAdIdEnabled = (enabled) => (
46
- NativeModules.RNRadar.setAdIdEnabled(enabled)
47
- )
48
-
49
45
  const getPermissionsStatus = () => (
50
46
  NativeModules.RNRadar.getPermissionsStatus()
51
47
  );
@@ -70,6 +66,10 @@ const trackOnce = options => {
70
66
  return NativeModules.RNRadar.trackOnce(backCompatibleOptions)
71
67
  };
72
68
 
69
+ const trackVerified = () => (
70
+ NativeModules.RNRadar.trackVerified()
71
+ );
72
+
73
73
  const startTrackingEfficient = () => (
74
74
  NativeModules.RNRadar.startTrackingEfficient()
75
75
  );
@@ -170,8 +170,12 @@ const getMatrix = options => (
170
170
  NativeModules.RNRadar.getMatrix(options)
171
171
  );
172
172
 
173
- const sendEvent = (customType, metadata) => (
174
- NativeModules.RNRadar.sendEvent(customType, metadata)
173
+ const logConversion = options => (
174
+ NativeModules.RNRadar.logConversion(options)
175
+ )
176
+
177
+ const sendEvent = (name, metadata) => (
178
+ NativeModules.RNRadar.sendEvent(name, metadata)
175
179
  )
176
180
 
177
181
  const on = (event, callback) => (
@@ -196,11 +200,11 @@ const Radar = {
196
200
  setMetadata,
197
201
  getMetadata,
198
202
  setAnonymousTrackingEnabled,
199
- setAdIdEnabled,
200
203
  getPermissionsStatus,
201
204
  requestPermissions,
202
205
  getLocation,
203
206
  trackOnce,
207
+ trackVerified,
204
208
  startTrackingEfficient,
205
209
  startTrackingResponsive,
206
210
  startTrackingContinuous,
@@ -226,6 +230,7 @@ const Radar = {
226
230
  ipGeocode,
227
231
  getDistance,
228
232
  getMatrix,
233
+ logConversion,
229
234
  sendEvent,
230
235
  on,
231
236
  off,
package/js/index.web.js CHANGED
@@ -87,6 +87,10 @@ const trackOnce = options => {
87
87
  });
88
88
  };
89
89
 
90
+ const trackVerified = () => {
91
+ // not implemented
92
+ };
93
+
90
94
  const startTrackingEfficient = () => {
91
95
  // not implemented
92
96
  };
@@ -371,6 +375,7 @@ const Radar = {
371
375
  requestPermissions,
372
376
  getLocation,
373
377
  trackOnce,
378
+ trackVerified,
374
379
  startTrackingEfficient,
375
380
  startTrackingResponsive,
376
381
  startTrackingContinuous,
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "React Native module for Radar, the leading geofencing and location tracking platform",
4
4
  "homepage": "https://radar.com",
5
5
  "license": "Apache-2.0",
6
- "version": "3.5.11",
6
+ "version": "3.7.3",
7
7
  "main": "js/index.js",
8
8
  "files": [
9
9
  "android",
@@ -15,5 +15,5 @@ Pod::Spec.new do |s|
15
15
  s.platform = :ios, "10.0"
16
16
 
17
17
  s.dependency "React"
18
- s.dependency "RadarSDK", "~> 3.5.12"
18
+ s.dependency "RadarSDK", "~> 3.7.7"
19
19
  end