@blueconic/blueconic-react-native 4.0.3 → 5.1.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.
@@ -14,6 +14,7 @@ import com.blueconic.impl.configuration.BlueConicConfiguration;
14
14
  import com.blueconic.plugin.events.Event;
15
15
  import com.blueconic.plugin.events.EventHandler;
16
16
  import com.blueconic.plugin.events.PropertiesDialogueEvent;
17
+ import com.blueconic.plugin.events.RecommendationsDialogueEvent;
17
18
  import com.facebook.react.bridge.*;
18
19
  import com.facebook.react.modules.core.DeviceEventManagerModule;
19
20
  import org.jetbrains.annotations.NotNull;
@@ -158,7 +159,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
158
159
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
159
160
  String profileId = "";
160
161
  if (blueConicClient != null) {
161
- profileId = blueConicClient.getProfileId();
162
+ profileId = blueConicClient.getProfile().getId();
162
163
  }
163
164
 
164
165
  promise.resolve(profileId);
@@ -175,20 +176,41 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
175
176
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
176
177
  String profileId = "";
177
178
  if (blueConicClient != null) {
178
- profileId = blueConicClient.getProfileId();
179
+ profileId = blueConicClient.getProfile().getId();
179
180
  }
180
181
 
181
182
  callback.invoke(profileId);
182
183
  }
183
184
 
184
185
  /**
185
- * Resets the BlueConic profile id. This will generate a new profile id for the current user.
186
+ * Clears the profile ID from the BlueConic client locally (cache). A new profile ID will be generated.
186
187
  */
187
188
  @ReactMethod
188
- public void clearProfileId(@Nonnull Callback callback) {
189
+ public void createProfile(@Nonnull Callback callback) {
189
190
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
190
191
  if (blueConicClient != null) {
191
- blueConicClient.clearProfileId(new com.blueconic.Callback() {
192
+ blueConicClient.createProfile(new com.blueconic.Callback() {
193
+ @Override
194
+ public void onSuccess() {
195
+ callback.invoke(true, null);
196
+ }
197
+
198
+ @Override
199
+ public void onError(@NotNull com.blueconic.Error error) {
200
+ callback.invoke(false, error.toString());
201
+ }
202
+ });
203
+ }
204
+ }
205
+
206
+ /**
207
+ * Removes the profile from the BlueConic servers. The profile ID will be removed from the BlueConic client. A new profile ID will be generated.
208
+ */
209
+ @ReactMethod
210
+ public void deleteProfile(@Nonnull Callback callback) {
211
+ final BlueConicClient blueConicClient = getBlueConicClientInstance();
212
+ if (blueConicClient != null) {
213
+ blueConicClient.deleteProfile(new com.blueconic.Callback() {
192
214
  @Override
193
215
  public void onSuccess() {
194
216
  callback.invoke(true, null);
@@ -250,7 +272,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
250
272
  final WritableArray result = getWritableArray();
251
273
 
252
274
  if (blueConicClient != null) {
253
- result.pushString(blueConicClient.getProfileValue(property));
275
+ result.pushString(blueConicClient.getProfile().getValue(property));
254
276
  }
255
277
  promise.resolve(result);
256
278
  }
@@ -269,7 +291,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
269
291
  final WritableArray result = getWritableArray();
270
292
 
271
293
  if (blueConicClient != null) {
272
- Collection<String> values = blueConicClient.getProfileValues(property);
294
+ Collection<String> values = blueConicClient.getProfile().getValues(property);
273
295
  result.pushArray(fromList(new ArrayList<>(values)));
274
296
  }
275
297
 
@@ -290,7 +312,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
290
312
  final WritableArray result = getWritableArray();
291
313
 
292
314
  if (blueConicClient != null) {
293
- result.pushString(blueConicClient.getProfileValue(property));
315
+ result.pushString(blueConicClient.getProfile().getValue(property));
294
316
  }
295
317
 
296
318
  callback.invoke(result);
@@ -310,7 +332,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
310
332
  final WritableArray result = getWritableArray();
311
333
 
312
334
  if (blueConicClient != null) {
313
- Collection<String> values = blueConicClient.getProfileValues(property);
335
+ Collection<String> values = blueConicClient.getProfile().getValues(property);
314
336
  result.pushArray(fromList(new ArrayList<>(values)));
315
337
  }
316
338
 
@@ -333,10 +355,10 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
333
355
  }
334
356
  BlueConicClientImpl implInstance = (BlueConicClientImpl) blueConicClient;
335
357
 
336
- for (String propertyName : implInstance.getProfilePropertyNames()) {
358
+ for (String propertyName : implInstance.getProfile().getProfilePropertyNames()) {
337
359
  final WritableMap item = getWritableMap();
338
360
  item.putString("id", propertyName);
339
- Collection<String> values = blueConicClient.getProfileValues(propertyName);
361
+ Collection<String> values = blueConicClient.getProfile().getValues(propertyName);
340
362
  String joinedValues = String.join(",", values);
341
363
  item.putString("value", joinedValues);
342
364
  result.pushMap(item);
@@ -358,7 +380,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
358
380
  final WritableArray result = getWritableArray();
359
381
 
360
382
  if (blueConicClient != null) {
361
- result.pushString(blueConicClient.getPrivacyLegislation());
383
+ result.pushString(blueConicClient.getProfile().getPrivacyLegislation());
362
384
  }
363
385
  promise.resolve(result);
364
386
  }
@@ -376,7 +398,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
376
398
  final WritableArray result = getWritableArray();
377
399
 
378
400
  if (blueConicClient != null) {
379
- result.pushString(blueConicClient.getPrivacyLegislation());
401
+ result.pushString(blueConicClient.getProfile().getPrivacyLegislation());
380
402
  }
381
403
 
382
404
  callback.invoke(result);
@@ -395,7 +417,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
395
417
  final WritableArray result = getWritableArray();
396
418
 
397
419
  if (blueConicClient != null) {
398
- Collection<String> values = blueConicClient.getConsentedObjectives();
420
+ Collection<String> values = blueConicClient.getProfile().getConsentedObjectives();
399
421
  result.pushArray(fromList(new ArrayList<>(values)));
400
422
  }
401
423
 
@@ -415,7 +437,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
415
437
  final WritableArray result = getWritableArray();
416
438
 
417
439
  if (blueConicClient != null) {
418
- Collection<String> values = blueConicClient.getConsentedObjectives();
440
+ Collection<String> values = blueConicClient.getProfile().getConsentedObjectives();
419
441
  result.pushArray(fromList(new ArrayList<>(values)));
420
442
  }
421
443
 
@@ -435,7 +457,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
435
457
  final WritableArray result = getWritableArray();
436
458
 
437
459
  if (blueConicClient != null) {
438
- Collection<String> values = blueConicClient.getRefusedObjectives();
460
+ Collection<String> values = blueConicClient.getProfile().getRefusedObjectives();
439
461
  result.pushArray(fromList(new ArrayList<>(values)));
440
462
  }
441
463
 
@@ -455,7 +477,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
455
477
  final WritableArray result = getWritableArray();
456
478
 
457
479
  if (blueConicClient != null) {
458
- Collection<String> values = blueConicClient.getRefusedObjectives();
480
+ Collection<String> values = blueConicClient.getProfile().getRefusedObjectives();
459
481
  result.pushArray(fromList(new ArrayList<>(values)));
460
482
  }
461
483
 
@@ -471,7 +493,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
471
493
  public void addConsentedObjective(@Nonnull String objectiveId) {
472
494
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
473
495
  if (blueConicClient != null) {
474
- blueConicClient.addConsentedObjective(objectiveId, null);
496
+ blueConicClient.getProfile().addConsentedObjective(objectiveId, null);
475
497
  }
476
498
  }
477
499
 
@@ -484,7 +506,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
484
506
  public void addRefusedObjective(@Nonnull String objectiveId) {
485
507
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
486
508
  if (blueConicClient != null) {
487
- blueConicClient.addRefusedObjective(objectiveId, null);
509
+ blueConicClient.getProfile().addRefusedObjective(objectiveId, null);
488
510
  }
489
511
  }
490
512
 
@@ -497,7 +519,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
497
519
  public void setPrivacyLegislation(@Nonnull String privacyLegislation) {
498
520
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
499
521
  if (blueConicClient != null) {
500
- blueConicClient.setPrivacyLegislation(privacyLegislation);
522
+ blueConicClient.getProfile().setPrivacyLegislation(privacyLegislation);
501
523
  }
502
524
  }
503
525
 
@@ -509,8 +531,12 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
509
531
  @ReactMethod
510
532
  public void setConsentedObjectives(@Nonnull ReadableArray objectiveIds) {
511
533
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
534
+ List<String> objectiveValues = new ArrayList<>();
535
+ for (Object value : objectiveIds.toArrayList()) {
536
+ objectiveValues.add((String) value);
537
+ }
512
538
  if (blueConicClient != null) {
513
- blueConicClient.setConsentedObjectives(toList(objectiveIds));
539
+ blueConicClient.getProfile().setConsentedObjectives(objectiveValues);
514
540
  }
515
541
  }
516
542
 
@@ -522,8 +548,12 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
522
548
  @ReactMethod
523
549
  public void setRefusedObjectives(@Nonnull ReadableArray objectiveIds) {
524
550
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
551
+ List<String> objectiveValues = new ArrayList<>();
552
+ for (Object value : objectiveIds.toArrayList()) {
553
+ objectiveValues.add((String) value);
554
+ }
525
555
  if (blueConicClient != null) {
526
- blueConicClient.setRefusedObjectives(toList(objectiveIds));
556
+ blueConicClient.getProfile().setRefusedObjectives(objectiveValues);
527
557
  }
528
558
  }
529
559
 
@@ -618,7 +648,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
618
648
  public void addProfileValue(@Nonnull String property, @Nonnull String value) {
619
649
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
620
650
  if (blueConicClient != null) {
621
- blueConicClient.addProfileValue(property, value, null);
651
+ blueConicClient.getProfile().addValue(property, value, null);
622
652
  }
623
653
  }
624
654
 
@@ -631,8 +661,12 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
631
661
  @ReactMethod
632
662
  public void addProfileValues(@Nonnull String property, @Nonnull ReadableArray values) {
633
663
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
664
+ List<String> profileValues = new ArrayList<>();
665
+ for (Object value : values.toArrayList()) {
666
+ profileValues.add((String) value);
667
+ }
634
668
  if (blueConicClient != null) {
635
- blueConicClient.addProfileValues(property, toList(values), null);
669
+ blueConicClient.getProfile().addValues(property, profileValues, null);
636
670
  }
637
671
  }
638
672
 
@@ -646,7 +680,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
646
680
  public void setProfileValue(@Nonnull String property, @Nonnull String value) {
647
681
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
648
682
  if (blueConicClient != null) {
649
- blueConicClient.setProfileValue(property, value, null);
683
+ blueConicClient.getProfile().setValue(property, value, null);
650
684
  }
651
685
  }
652
686
 
@@ -659,8 +693,12 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
659
693
  @ReactMethod
660
694
  public void setProfileValues(@Nonnull String property, @Nonnull ReadableArray values) {
661
695
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
696
+ List<String> profileValues = new ArrayList<>();
697
+ for (Object value : values.toArrayList()) {
698
+ profileValues.add((String) value);
699
+ }
662
700
  if (blueConicClient != null) {
663
- blueConicClient.setProfileValues(property, toList(values), null);
701
+ blueConicClient.getProfile().setValues(property, profileValues, null);
664
702
  }
665
703
  }
666
704
 
@@ -671,10 +709,10 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
671
709
  * @param value A ReadableArray containing Strings that will be incremented to the profile property.
672
710
  */
673
711
  @ReactMethod
674
- public void incrementProfileValue(@Nonnull String property, @Nonnull String value) {
712
+ public void incrementProfileValue(@Nonnull String property, @Nonnull Integer value) {
675
713
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
676
714
  if (blueConicClient != null) {
677
- blueConicClient.incrementProfileValue(property, value, null);
715
+ blueConicClient.getProfile().incrementValue(property, value, null);
678
716
  }
679
717
  }
680
718
 
@@ -690,7 +728,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
690
728
  final Map<String, Object> properties = readableMap.toHashMap();
691
729
 
692
730
  if (blueConicClient != null) {
693
- blueConicClient.createEvent(eventName, properties, getCurrentActivity(), null);
731
+ blueConicClient.createEvent(eventName, properties, getReactApplicationContext().getCurrentActivity(), null);
694
732
  }
695
733
  }
696
734
 
@@ -708,7 +746,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
708
746
  final Map<String, Object> properties = readableMap.toHashMap();
709
747
 
710
748
  if (blueConicClient != null) {
711
- blueConicClient.createEvent(eventName, properties, getCurrentActivity(), new com.blueconic.Callback() {
749
+ blueConicClient.createEvent(eventName, properties, getReactApplicationContext().getCurrentActivity(), new com.blueconic.Callback() {
712
750
  @Override
713
751
  public void onSuccess() {
714
752
  promise.resolve(getWritableArray());
@@ -738,7 +776,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
738
776
  final Map<String, Object> properties = readableMap.toHashMap();
739
777
 
740
778
  if (blueConicClient != null) {
741
- blueConicClient.createEvent(eventName, properties, getCurrentActivity(), new com.blueconic.Callback() {
779
+ blueConicClient.createEvent(eventName, properties, getReactApplicationContext().getCurrentActivity(), new com.blueconic.Callback() {
742
780
  @Override
743
781
  public void onSuccess() {
744
782
  callback.invoke(true, null);
@@ -832,7 +870,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
832
870
  if (blueConicClient != null) {
833
871
  // blueConicClient instance must have an activity or application
834
872
  final Map<String, Object> properties = readableMap.toHashMap();
835
- Activity activity = getCurrentActivity();
873
+ Activity activity = getReactApplicationContext().getCurrentActivity();
836
874
  if (activity == null) {
837
875
  activity = new Activity();
838
876
  }
@@ -855,7 +893,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
855
893
  if (blueConicClient != null) {
856
894
  // blueConicClient instance must have an activity or application
857
895
  final Map<String, Object> properties = readableMap.toHashMap();
858
- Activity activity = getCurrentActivity();
896
+ Activity activity = getReactApplicationContext().getCurrentActivity();
859
897
  if (activity == null) {
860
898
  activity = new Activity();
861
899
  }
@@ -889,7 +927,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
889
927
  if (blueConicClient != null) {
890
928
  // blueConicClient instance must have an activity or application
891
929
  final Map<String, Object> properties = readableMap.toHashMap();
892
- Activity activity = getCurrentActivity();
930
+ Activity activity = getReactApplicationContext().getCurrentActivity();
893
931
  if (activity == null) {
894
932
  activity = new Activity();
895
933
  }
@@ -923,7 +961,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
923
961
  final Map<String, Object> properties = readableMap.toHashMap();
924
962
 
925
963
  if (blueConicClient != null) {
926
- Activity activity = getCurrentActivity();
964
+ Activity activity = getReactApplicationContext().getCurrentActivity();
927
965
  if (activity == null) {
928
966
  activity = new Activity();
929
967
  }
@@ -946,7 +984,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
946
984
  final Map<String, Object> properties = readableMap.toHashMap();
947
985
 
948
986
  if (blueConicClient != null) {
949
- Activity activity = getCurrentActivity();
987
+ Activity activity = getReactApplicationContext().getCurrentActivity();
950
988
  if (activity == null) {
951
989
  activity = new Activity();
952
990
  }
@@ -981,7 +1019,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
981
1019
  final Map<String, Object> properties = readableMap.toHashMap();
982
1020
 
983
1021
  if (blueConicClient != null) {
984
- Activity activity = getCurrentActivity();
1022
+ Activity activity = getReactApplicationContext().getCurrentActivity();
985
1023
  if (activity == null) {
986
1024
  activity = new Activity();
987
1025
  }
@@ -1013,7 +1051,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
1013
1051
  final Map<String, Object> properties = readableMap.toHashMap();
1014
1052
 
1015
1053
  if (blueConicClient != null) {
1016
- Activity activity = getCurrentActivity();
1054
+ Activity activity = getReactApplicationContext().getCurrentActivity();
1017
1055
  if (activity == null) {
1018
1056
  activity = new Activity();
1019
1057
  }
@@ -1036,7 +1074,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
1036
1074
  final Map<String, Object> properties = readableMap.toHashMap();
1037
1075
 
1038
1076
  if (blueConicClient != null) {
1039
- Activity activity = getCurrentActivity();
1077
+ Activity activity = getReactApplicationContext().getCurrentActivity();
1040
1078
  if (activity == null) {
1041
1079
  activity = new Activity();
1042
1080
  }
@@ -1070,7 +1108,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
1070
1108
  final Map<String, Object> properties = readableMap.toHashMap();
1071
1109
 
1072
1110
  if (blueConicClient != null) {
1073
- Activity activity = getCurrentActivity();
1111
+ Activity activity = getReactApplicationContext().getCurrentActivity();
1074
1112
  if (activity == null) {
1075
1113
  activity = new Activity();
1076
1114
  }
@@ -1102,7 +1140,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
1102
1140
  final Map<String, Object> properties = readableMap.toHashMap();
1103
1141
 
1104
1142
  if (blueConicClient != null) {
1105
- Activity activity = getCurrentActivity();
1143
+ Activity activity = getReactApplicationContext().getCurrentActivity();
1106
1144
  if (activity == null) {
1107
1145
  activity = new Activity();
1108
1146
  }
@@ -1125,7 +1163,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
1125
1163
  final Map<String, Object> properties = readableMap.toHashMap();
1126
1164
 
1127
1165
  if (blueConicClient != null) {
1128
- Activity activity = getCurrentActivity();
1166
+ Activity activity = getReactApplicationContext().getCurrentActivity();
1129
1167
  if (activity == null) {
1130
1168
  activity = new Activity();
1131
1169
  }
@@ -1159,7 +1197,7 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
1159
1197
  final Map<String, Object> properties = readableMap.toHashMap();
1160
1198
 
1161
1199
  if (blueConicClient != null) {
1162
- Activity activity = getCurrentActivity();
1200
+ Activity activity = getReactApplicationContext().getCurrentActivity();
1163
1201
  if (activity == null) {
1164
1202
  activity = new Activity();
1165
1203
  }
@@ -1337,12 +1375,76 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
1337
1375
  }
1338
1376
  }
1339
1377
 
1378
+ @ReactMethod
1379
+ public void createRecommendationEvent(@Nonnull String storeId, @Nonnull String action, @Nonnull ReadableArray itemIds) {
1380
+ final BlueConicClient blueConicClient = getBlueConicClientInstance();
1381
+ List<String> itemIdsValues = new ArrayList<>();
1382
+ for (Object value : itemIds.toArrayList()) {
1383
+ itemIdsValues.add((String) value);
1384
+ }
1385
+
1386
+ if (blueConicClient != null) {
1387
+ blueConicClient.createRecommendationEvent(storeId, action, itemIdsValues, null);
1388
+ }
1389
+ }
1390
+
1391
+ @ReactMethod
1392
+ public void createRecommendationEventAsync(@Nonnull String storeId, @Nonnull String action, @Nonnull ReadableArray itemIds, @Nonnull final Promise promise) {
1393
+ final BlueConicClient blueConicClient = getBlueConicClientInstance();
1394
+ List<String> itemIdsValues = new ArrayList<>();
1395
+ for (Object value : itemIds.toArrayList()) {
1396
+ itemIdsValues.add((String) value);
1397
+ }
1398
+
1399
+ if (blueConicClient != null) {
1400
+ blueConicClient.createRecommendationEvent(storeId, action, itemIdsValues, new com.blueconic.Callback() {
1401
+ @Override
1402
+ public void onSuccess() {
1403
+ promise.resolve(getWritableArray());
1404
+ }
1405
+
1406
+ @Override
1407
+ public void onError(@NotNull com.blueconic.Error error) {
1408
+ promise.resolve(getWritableArray());
1409
+ }
1410
+ });
1411
+ } else {
1412
+ promise.resolve(getWritableArray());
1413
+ }
1414
+ }
1415
+
1416
+ @ReactMethod
1417
+ public void createRecommendationEventWithCallback(@Nonnull String storeId, @Nonnull String action, @Nonnull ReadableArray itemIds, @Nonnull final Callback callback) {
1418
+ final BlueConicClient blueConicClient = getBlueConicClientInstance();
1419
+ List<String> itemIdsValues = new ArrayList<>();
1420
+ for (Object value : itemIds.toArrayList()) {
1421
+ itemIdsValues.add((String) value);
1422
+ }
1423
+
1424
+ if (blueConicClient != null) {
1425
+ blueConicClient.createRecommendationEvent(storeId, action, itemIdsValues, new com.blueconic.Callback() {
1426
+ @Override
1427
+ public void onSuccess() {
1428
+ callback.invoke(true, null);
1429
+ }
1430
+
1431
+ @Override
1432
+ public void onError(@NotNull com.blueconic.Error error) {
1433
+ callback.invoke(false, error.toString());
1434
+ }
1435
+ });
1436
+ } else {
1437
+ callback.invoke(false, "InternalError");
1438
+ }
1439
+ }
1440
+
1340
1441
  @ReactMethod
1341
1442
  public void subscribe(@Nonnull String eventName, boolean onlyOnce, @Nonnull String identifier) {
1342
1443
  final BlueConicClient blueConicClient = getBlueConicClientInstance();
1343
1444
 
1344
1445
  EventHandler eventHandler = switch (eventName) {
1345
1446
  case "propertiesDialogueEvent" -> new PropertiesDialogueHandler(eventName);
1447
+ case "recommendationsDialogueEvent" -> new RecommendationsDialogueHandler(eventName);
1346
1448
  default -> event -> {};
1347
1449
  };
1348
1450
 
@@ -1362,11 +1464,13 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
1362
1464
  */
1363
1465
  @ReactMethod
1364
1466
  public void publishClickEvent(@Nonnull String selector, ReadableArray values) {
1365
- List<String> contextValues;
1467
+ List<String> contextValues = new ArrayList<>();
1366
1468
  if (values == null) {
1367
1469
  contextValues = emptyList();
1368
1470
  } else {
1369
- contextValues = toList(values);
1471
+ for (Object value : values.toArrayList()) {
1472
+ contextValues.add((String) value);
1473
+ }
1370
1474
  }
1371
1475
  getBlueConicClientInstance().getEventManager().publishClickEvent(selector, contextValues, null);
1372
1476
  }
@@ -1378,11 +1482,13 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
1378
1482
  */
1379
1483
  @ReactMethod
1380
1484
  public void publishClickEventWithCallback(@Nonnull String selector, ReadableArray values, @Nonnull final Callback callback) {
1381
- List<String> contextValues;
1485
+ List<String> contextValues = new ArrayList<>();
1382
1486
  if (values == null) {
1383
1487
  contextValues = emptyList();
1384
1488
  } else {
1385
- contextValues = toList(values);
1489
+ for (Object value : values.toArrayList()) {
1490
+ contextValues.add((String) value);
1491
+ }
1386
1492
  }
1387
1493
  getBlueConicClientInstance().getEventManager().publishClickEvent(selector, contextValues, new com.blueconic.Callback() {
1388
1494
  @Override
@@ -1404,11 +1510,13 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
1404
1510
  */
1405
1511
  @ReactMethod
1406
1512
  public void publishFormSubmitEvent(@Nonnull String selector, ReadableArray values) {
1407
- List<String> contextValues;
1513
+ List<String> contextValues = new ArrayList<>();
1408
1514
  if (values == null) {
1409
1515
  contextValues = emptyList();
1410
1516
  } else {
1411
- contextValues = toList(values);
1517
+ for (Object value : values.toArrayList()) {
1518
+ contextValues.add((String) value);
1519
+ }
1412
1520
  }
1413
1521
  getBlueConicClientInstance().getEventManager().publishFormSubmitEvent(selector, contextValues, null);
1414
1522
  }
@@ -1420,11 +1528,13 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
1420
1528
  */
1421
1529
  @ReactMethod
1422
1530
  public void publishFormSubmitEventWithCallback(@Nonnull String selector, ReadableArray values, @Nonnull final Callback callback) {
1423
- List<String> contextValues;
1531
+ List<String> contextValues = new ArrayList<>();
1424
1532
  if (values == null) {
1425
1533
  contextValues = emptyList();
1426
1534
  } else {
1427
- contextValues = toList(values);
1535
+ for (Object value : values.toArrayList()) {
1536
+ contextValues.add((String) value);
1537
+ }
1428
1538
  }
1429
1539
  getBlueConicClientInstance().getEventManager().publishFormSubmitEvent(selector, contextValues, new com.blueconic.Callback() {
1430
1540
  @Override
@@ -1511,7 +1621,11 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
1511
1621
  */
1512
1622
  @ReactMethod
1513
1623
  public void publishAdvancedEvent(@Nonnull String name, @Nonnull ReadableArray values) {
1514
- getBlueConicClientInstance().getEventManager().publishAdvancedEvent(name, toList(values), null);
1624
+ List<String> contextValues = new ArrayList<>();
1625
+ for (Object value : values.toArrayList()) {
1626
+ contextValues.add((String) value);
1627
+ }
1628
+ getBlueConicClientInstance().getEventManager().publishAdvancedEvent(name, contextValues, null);
1515
1629
  }
1516
1630
 
1517
1631
  /**
@@ -1522,7 +1636,11 @@ public class BlueConicClientModule extends ReactContextBaseJavaModule {
1522
1636
  */
1523
1637
  @ReactMethod
1524
1638
  public void publishAdvancedEventWithCallback(@Nonnull String name, @Nonnull ReadableArray values, @Nonnull final Callback callback) {
1525
- getBlueConicClientInstance().getEventManager().publishAdvancedEvent(name, toList(values), new com.blueconic.Callback() {
1639
+ List<String> contextValues = new ArrayList<>();
1640
+ for (Object value : values.toArrayList()) {
1641
+ contextValues.add((String) value);
1642
+ }
1643
+ getBlueConicClientInstance().getEventManager().publishAdvancedEvent(name, contextValues, new com.blueconic.Callback() {
1526
1644
  @Override
1527
1645
  public void onSuccess() {
1528
1646
  callback.invoke(true, null);
@@ -1748,4 +1866,23 @@ class PropertiesDialogueHandler implements EventHandler {
1748
1866
  values.put("data", propertiesDialogueEvent.getData());
1749
1867
  BlueConicClientModule.publishDialogueEvent(values, eventName);
1750
1868
  }
1869
+ }
1870
+
1871
+ class RecommendationsDialogueHandler implements EventHandler {
1872
+ private final String eventName;
1873
+
1874
+ RecommendationsDialogueHandler(String eventName) {
1875
+ this.eventName = eventName;
1876
+ }
1877
+
1878
+ @Override
1879
+ public void handleEvent(@NotNull Event event) {
1880
+ RecommendationsDialogueEvent propertiesDialogueEvent = (RecommendationsDialogueEvent) event;
1881
+ Map<String, Object> values = new HashMap<>();
1882
+ values.put("variantId", propertiesDialogueEvent.getVariantId());
1883
+ values.put("position", propertiesDialogueEvent.getPosition());
1884
+ values.put("storeId", propertiesDialogueEvent.getStoreId());
1885
+ values.put("recommendations", propertiesDialogueEvent.getRecommendations());
1886
+ BlueConicClientModule.publishDialogueEvent(values, eventName);
1887
+ }
1751
1888
  }