reteno-react-native-sdk 1.7.0 → 1.7.2

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 (36) hide show
  1. package/android/build.gradle +1 -1
  2. package/android/src/main/java/com/retenosdk/RetenoEcomEvent.java +390 -0
  3. package/android/src/main/java/com/retenosdk/RetenoSdkModule.java +185 -0
  4. package/ios/RetenoEcomEvent.swift +270 -0
  5. package/ios/RetenoSdk.m +37 -0
  6. package/ios/RetenoSdk.swift +146 -0
  7. package/ios/RetenoSdk.xcodeproj/project.xcworkspace/xcuserdata/oleksandr.vasylkov.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  8. package/ios/RetenoSdk.xcodeproj/xcuserdata/{artem.chupika.xcuserdatad → oleksandr.vasylkov.xcuserdatad}/xcschemes/xcschememanagement.plist +0 -8
  9. package/lib/commonjs/index.js +96 -1
  10. package/lib/commonjs/index.js.map +1 -1
  11. package/lib/module/index.js +87 -0
  12. package/lib/module/index.js.map +1 -1
  13. package/lib/typescript/index.d.ts +132 -0
  14. package/lib/typescript/index.d.ts.map +1 -1
  15. package/package.json +3 -2
  16. package/reteno-react-native-sdk.podspec +1 -1
  17. package/src/index.ts +212 -0
  18. package/android/app/build/generated/source/codegen/RCTAppDependencyProvider.h +0 -25
  19. package/android/app/build/generated/source/codegen/RCTAppDependencyProvider.mm +0 -55
  20. package/android/app/build/generated/source/codegen/RCTModulesConformingToProtocolsProvider.h +0 -18
  21. package/android/app/build/generated/source/codegen/RCTModulesConformingToProtocolsProvider.mm +0 -33
  22. package/android/app/build/generated/source/codegen/RCTThirdPartyComponentsProvider.h +0 -16
  23. package/android/app/build/generated/source/codegen/RCTThirdPartyComponentsProvider.mm +0 -23
  24. package/android/app/build/generated/source/codegen/ReactAppDependencyProvider.podspec +0 -34
  25. package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeRetenoSdkSpec.java +0 -172
  26. package/android/app/build/generated/source/codegen/jni/CMakeLists.txt +0 -36
  27. package/android/app/build/generated/source/codegen/jni/NativeRetenoSdkSpec-generated.cpp +0 -176
  28. package/android/app/build/generated/source/codegen/jni/NativeRetenoSdkSpec.h +0 -31
  29. package/android/app/build/generated/source/codegen/jni/RetenoSdkSpec-generated.cpp +0 -22
  30. package/android/app/build/generated/source/codegen/jni/RetenoSdkSpec.h +0 -24
  31. package/android/app/build/generated/source/codegen/jni/react/renderer/components/NativeRetenoSdkSpec/NativeRetenoSdkSpecJSI-generated.cpp +0 -176
  32. package/android/app/build/generated/source/codegen/jni/react/renderer/components/NativeRetenoSdkSpec/NativeRetenoSdkSpecJSI.h +0 -343
  33. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RetenoSdkSpec/RetenoSdkSpecJSI-generated.cpp +0 -17
  34. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RetenoSdkSpec/RetenoSdkSpecJSI.h +0 -19
  35. package/ios/RetenoSdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  36. package/ios/RetenoSdk.xcodeproj/project.xcworkspace/xcuserdata/artem.chupika.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
@@ -72,7 +72,7 @@ dependencies {
72
72
  //noinspection GradleDynamicVersion
73
73
  implementation "com.facebook.react:react-native"
74
74
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
75
- implementation 'com.reteno:fcm:2.0.20'
75
+ implementation 'com.reteno:fcm:2.6.6'
76
76
  implementation "com.google.firebase:firebase-messaging:23.1.0"
77
77
  implementation "com.google.firebase:firebase-messaging-ktx:23.1.0"
78
78
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.2'
@@ -0,0 +1,390 @@
1
+ package com.retenosdk;
2
+
3
+ import static com.reteno.core.domain.model.ecom.EcomEvent.CartUpdated;
4
+ import static com.reteno.core.domain.model.ecom.EcomEvent.OrderCancelled;
5
+ import static com.reteno.core.domain.model.ecom.EcomEvent.OrderCreated;
6
+ import static com.reteno.core.domain.model.ecom.EcomEvent.OrderDelivered;
7
+ import static com.reteno.core.domain.model.ecom.EcomEvent.OrderUpdated;
8
+ import static com.reteno.core.domain.model.ecom.EcomEvent.ProductAddedToWishlist;
9
+ import static com.reteno.core.domain.model.ecom.EcomEvent.ProductCategoryViewed;
10
+ import static com.reteno.core.domain.model.ecom.EcomEvent.ProductViewed;
11
+ import static com.reteno.core.domain.model.ecom.EcomEvent.SearchRequest;
12
+
13
+ import android.util.Pair;
14
+
15
+ import com.facebook.react.bridge.ReadableArray;
16
+ import com.facebook.react.bridge.ReadableMap;
17
+ import com.reteno.core.domain.model.ecom.Attributes;
18
+ import com.facebook.react.bridge.ReadableType;
19
+ import com.reteno.core.domain.model.ecom.Order;
20
+ import com.reteno.core.domain.model.ecom.OrderItem;
21
+ import com.reteno.core.domain.model.ecom.OrderStatus;
22
+ import com.reteno.core.domain.model.ecom.ProductCategoryView;
23
+ import com.reteno.core.domain.model.ecom.ProductInCart;
24
+ import com.reteno.core.domain.model.ecom.ProductView;
25
+
26
+ import java.time.ZonedDateTime;
27
+ import java.util.ArrayList;
28
+
29
+ import javax.annotation.Nullable;
30
+
31
+ public class RetenoEcomEvent {
32
+
33
+ @Nullable
34
+ static Attributes buildAttributesFromPayload(ReadableMap payload) {
35
+ if (payload == null) return null;
36
+ String name = RetenoUtil.getStringOrNull(payload.getString("name"));
37
+ ReadableArray value = payload.getArray("value");
38
+ ArrayList<String> values = new ArrayList<>();
39
+ if (value != null) {
40
+ for (int i = 0; i < value.size(); i++) {
41
+ values.add(value.getString(i));
42
+ }
43
+ }
44
+ if (name == null) return null;
45
+
46
+ return new Attributes(
47
+ name,
48
+ values
49
+ );
50
+ }
51
+
52
+ @Nullable
53
+ static Pair<String, String> buildSimpleAttributesFromPayload(ReadableMap payload) {
54
+ if (payload == null) return null;
55
+ String name = RetenoUtil.getStringOrNull(payload.getString("name"));
56
+ String value = RetenoUtil.getStringOrNull(payload.getString("value"));
57
+ if (name == null || value == null) return null;
58
+
59
+ return new Pair<>(
60
+ name,
61
+ value
62
+ );
63
+ }
64
+
65
+ @Nullable
66
+ static ProductView buildProductFromPayload(ReadableMap payload) {
67
+
68
+ if (payload == null) return null;
69
+ String productId = payload.getString("productId");
70
+ if (productId == null) return null;
71
+ double price = payload.getDouble("price");
72
+ boolean isInStock = payload.getBoolean("isInStock");
73
+ ReadableArray attributes = payload.getArray("attributes");
74
+ ArrayList<Attributes> attrList = new ArrayList<>();
75
+ Attributes attr;
76
+
77
+ if (attributes != null) {
78
+ for (int i = 0; i < attributes.size(); i++) {
79
+ attr = buildAttributesFromPayload(attributes.getMap(i));
80
+ if (attr != null) {
81
+ attrList.add(attr);
82
+ }
83
+ }
84
+ }
85
+
86
+ return new ProductView(
87
+ productId,
88
+ price,
89
+ isInStock,
90
+ attrList
91
+ );
92
+ }
93
+
94
+ @Nullable
95
+ static ProductViewed buildProductViewedFromPayload(ReadableMap payload) {
96
+ if (payload == null) return null;
97
+ ProductView productView = buildProductFromPayload(payload.getMap("product"));
98
+ if (productView == null) return null;
99
+ String currencyCode = RetenoUtil.getStringOrNull(payload.getString("currencyCode"));
100
+
101
+ return new ProductViewed(
102
+ productView,
103
+ currencyCode
104
+ );
105
+ }
106
+
107
+ @Nullable
108
+ public static ProductCategoryViewed buildProductCategoryViewedFromPayload(ReadableMap payload) {
109
+ if (payload == null) return null;
110
+ ProductCategoryView categoryView = buildProductCategoryFromPayload(payload.getMap("category"));
111
+ if (categoryView == null) return null;
112
+
113
+ return new ProductCategoryViewed(categoryView);
114
+ }
115
+
116
+ @Nullable
117
+ private static ProductCategoryView buildProductCategoryFromPayload(ReadableMap payload) {
118
+ if (payload == null) return null;
119
+ String productCategoryId = payload.getString("productCategoryId");
120
+ if (productCategoryId == null) return null;
121
+ ReadableArray attributesArray = payload.getArray("attributes");
122
+ ArrayList<Attributes> attributesList = null;
123
+ Attributes attr;
124
+
125
+ if (attributesArray != null) {
126
+ attributesList = new ArrayList<>();
127
+ for (int i = 0; i < attributesArray.size(); i++) {
128
+ attr = buildAttributesFromPayload(attributesArray.getMap(i));
129
+ if (attr != null) {
130
+ attributesList.add(attr);
131
+ }
132
+ }
133
+ }
134
+
135
+ return new ProductCategoryView(
136
+ productCategoryId,
137
+ attributesList
138
+ );
139
+ }
140
+
141
+ @Nullable
142
+ public static ProductAddedToWishlist buildProductAddedToWishlistFromPayload(ReadableMap payload) {
143
+ if (payload == null) return null;
144
+ ProductView productView = buildProductFromPayload(payload.getMap("product"));
145
+ if (productView == null) return null;
146
+ String currencyCode = payload.getString("currencyCode");
147
+
148
+ return new ProductAddedToWishlist(
149
+ productView,
150
+ currencyCode
151
+ );
152
+ }
153
+
154
+ @Nullable
155
+ public static CartUpdated buildCartUpdatedFromPayload(ReadableMap payload) {
156
+ if (payload == null) return null;
157
+ String cartId = payload.getString("cartId");
158
+ if (cartId == null) return null;
159
+ ReadableArray products = payload.getArray("cartItems");
160
+ if (products == null) return null;
161
+ ArrayList<ProductInCart> productList = new ArrayList<>();
162
+
163
+ for (int i = 0; i < products.size(); i++) {
164
+ ProductInCart item = buildCartItemFromPayload(products.getMap(i));
165
+ if (item != null) {
166
+ productList.add(item);
167
+ }
168
+ }
169
+
170
+ String currencyCode = payload.getString("currencyCode");
171
+
172
+ return new CartUpdated(
173
+ cartId,
174
+ productList,
175
+ currencyCode
176
+ );
177
+ }
178
+
179
+ @Nullable
180
+ static ProductInCart buildCartItemFromPayload(ReadableMap payload) {
181
+ if (payload == null) return null;
182
+ String productId = payload.getString("productId");
183
+ if (productId == null) return null;
184
+ int quantity = payload.getInt("quantity");
185
+ double price = payload.getDouble("price");
186
+ Double discount = payload.getDouble("discount");
187
+ String name = payload.getString("name");
188
+ String category = payload.getString("category");
189
+
190
+ ReadableArray attributesArray = payload.getArray("attributes");
191
+ ArrayList<Attributes> attributesList = null;
192
+ Attributes attr;
193
+
194
+ if (attributesArray != null) {
195
+ attributesList = new ArrayList<>();
196
+ for (int i = 0; i < attributesArray.size(); i++) {
197
+ attr = buildAttributesFromPayload(attributesArray.getMap(i));
198
+ if (attr != null) {
199
+ attributesList.add(attr);
200
+ }
201
+ }
202
+ }
203
+
204
+ return new ProductInCart(
205
+ productId,
206
+ quantity,
207
+ price,
208
+ discount,
209
+ name,
210
+ category,
211
+ attributesList
212
+ );
213
+ }
214
+
215
+ @Nullable
216
+ public static OrderCreated buildOrderCreatedFromPayload(ReadableMap payload) {
217
+ if (payload == null) return null;
218
+ Order order = buildOrderFromPayload(payload.getMap("order"));
219
+ if (order == null) return null;
220
+ String currencyCode = payload.getString("currencyCode");
221
+
222
+ return new OrderCreated(
223
+ order,
224
+ currencyCode
225
+ );
226
+ }
227
+
228
+ private static Double getSafeDouble(ReadableMap payload, String key) {
229
+ if (payload.getType(key) == ReadableType.Number) {
230
+
231
+ return payload.getDouble(key);
232
+ } else {
233
+ return null;
234
+ }
235
+ }
236
+
237
+ @Nullable
238
+ private static Order buildOrderFromPayload(ReadableMap payload) {
239
+ if (payload == null) return null;
240
+ String externalOrderId = payload.getString("externalOrderId");
241
+ if (externalOrderId == null) return null;
242
+ String externalCustomerId = payload.getString("externalCustomerId");
243
+ double totalCost = payload.getDouble("totalCost");
244
+ OrderStatus status = OrderStatus.values()[payload.getInt("status")];
245
+ String cartId = payload.getString("cartId");
246
+ String email = payload.getString("email");
247
+ String phone = payload.getString("phone");
248
+ String name = payload.getString("firstName");
249
+ String lastName = payload.getString("lastName");
250
+ Double shipping = getSafeDouble(payload, "shipping");
251
+ Double discount = getSafeDouble(payload, "discount");
252
+ Double taxes = getSafeDouble(payload, "taxes");
253
+ String restoreId = payload.getString("restoreId");
254
+ String statusDescription = payload.getString("statusDescription");
255
+ String storeId = payload.getString("storeId");
256
+ String source = payload.getString("source");
257
+ String deliveryMethod = payload.getString("deliveryMethod");
258
+ String paymentMethod = payload.getString("paymentMethod");
259
+ String deliveryAddress = payload.getString("deliveryAddress");
260
+ ReadableArray orderItems = payload.getArray("orderItems");
261
+ ArrayList<OrderItem> orderItemList = null;
262
+ if (orderItems != null) {
263
+ orderItemList = new ArrayList<>();
264
+ for (int i = 0; i < orderItems.size(); i++) {
265
+ OrderItem item = buildOrderItemFromPayload(orderItems.getMap(i));
266
+ if (item != null) {
267
+ orderItemList.add(item);
268
+ }
269
+ }
270
+ }
271
+
272
+
273
+ ReadableArray attributes = payload.getArray("attributes");
274
+ ArrayList<Pair<String, String>> attrPairs = null;
275
+
276
+ if (attributes != null) {
277
+ attrPairs = new ArrayList<>();
278
+ for (int i = 0; i < attributes.size(); i++) {
279
+ Pair<String, String> pair = buildSimpleAttributesFromPayload(attributes.getMap(i));
280
+ if (pair != null) {
281
+ attrPairs.add(pair);
282
+ }
283
+ }
284
+ }
285
+
286
+
287
+ return new Order(
288
+ externalOrderId,
289
+ externalCustomerId,
290
+ totalCost,
291
+ status,
292
+ ZonedDateTime.now(),
293
+ cartId,
294
+ email,
295
+ phone,
296
+ name,
297
+ lastName,
298
+ shipping,
299
+ discount,
300
+ taxes,
301
+ restoreId,
302
+ statusDescription,
303
+ storeId,
304
+ source,
305
+ deliveryMethod,
306
+ paymentMethod,
307
+ deliveryAddress,
308
+ orderItemList,
309
+ attrPairs
310
+ );
311
+ }
312
+
313
+ @Nullable
314
+ static OrderItem buildOrderItemFromPayload(ReadableMap payload) {
315
+ if (payload == null) return null;
316
+ String externalItemId = payload.getString("externalItemId");
317
+ if (externalItemId == null) return null;
318
+ String name = payload.getString("name");
319
+ if (name == null) return null;
320
+ String category = payload.getString("category");
321
+ if (category == null) return null;
322
+ int quantity = payload.getInt("quantity");
323
+ double price = payload.getDouble("price");
324
+ String url = payload.getString("url");
325
+ if (url == null) return null;
326
+ String imageUrl = payload.getString("imageUrl");
327
+ String description = payload.getString("description");
328
+
329
+
330
+ return new OrderItem(
331
+ externalItemId,
332
+ name,
333
+ category,
334
+ quantity,
335
+ price,
336
+ url,
337
+ imageUrl,
338
+ description
339
+ );
340
+ }
341
+
342
+ @Nullable
343
+ public static OrderUpdated buildOrderUpdatedFromPayload(ReadableMap payload) {
344
+ if (payload == null) return null;
345
+ Order order = buildOrderFromPayload(payload.getMap("order"));
346
+ if (order == null) return null;
347
+ String currencyCode = payload.getString("currencyCode");
348
+
349
+ return new OrderUpdated(
350
+ order,
351
+ currencyCode
352
+ );
353
+ }
354
+
355
+ @Nullable
356
+ public static OrderDelivered buildOrderDeliveredFromPayload(ReadableMap payload) {
357
+ if (payload == null) return null;
358
+ String externalOrderId = payload.getString("externalOrderId");
359
+ if (externalOrderId == null) return null;
360
+
361
+ return new OrderDelivered(
362
+ externalOrderId
363
+ );
364
+ }
365
+
366
+ @Nullable
367
+ public static OrderCancelled buildOrderCancelledFromPayload(ReadableMap payload) {
368
+ if (payload == null) return null;
369
+ String externalOrderId = payload.getString("externalOrderId");
370
+ if (externalOrderId == null) return null;
371
+
372
+ return new OrderCancelled(
373
+ externalOrderId
374
+ );
375
+ }
376
+
377
+ @Nullable
378
+ public static SearchRequest buildSearchRequestFromPayload(ReadableMap payload) {
379
+ if (payload == null) return null;
380
+ String search = payload.getString("searchQuery");
381
+ if (search == null) return null;
382
+ boolean isFound = payload.getBoolean("isFound");
383
+
384
+
385
+ return new SearchRequest(
386
+ search,
387
+ isFound
388
+ );
389
+ }
390
+ }
@@ -37,6 +37,7 @@ import com.reteno.core.view.iam.callback.InAppCloseData;
37
37
  import com.reteno.core.view.iam.callback.InAppErrorData;
38
38
  import com.reteno.core.view.iam.callback.InAppLifecycleCallback;
39
39
  import com.reteno.core.features.recommendation.GetRecommendationResponseCallback;
40
+ import com.reteno.core.domain.model.ecom.EcomEvent;
40
41
 
41
42
  import android.util.Log;
42
43
  import java.util.ArrayList;
@@ -596,4 +597,188 @@ public class RetenoSdkModule extends ReactContextBaseJavaModule {
596
597
  promise.reject("CallbackError", "No callback to unsubscribe");
597
598
  }
598
599
  }
600
+
601
+ /**
602
+ * Ecommerce Events
603
+ * 1. Product Viewed Event
604
+ */
605
+ @ReactMethod
606
+ public void logEcomEventProductViewed(ReadableMap payload, Promise promise) {
607
+ try {
608
+ EcomEvent.ProductViewed event = RetenoEcomEvent.buildProductViewedFromPayload(payload);
609
+ if (event == null) {
610
+ promise.reject("Payload Error", "Payload cannot be null");
611
+ return;
612
+ }
613
+ ((RetenoApplication) this.context.getCurrentActivity().getApplication())
614
+ .getRetenoInstance()
615
+ .logEcommerceEvent(event);
616
+ } catch (Exception e) {
617
+ promise.reject("Reteno Android SDK Error", e);
618
+ return;
619
+ }
620
+ WritableMap res = new WritableNativeMap();
621
+ res.putBoolean("success", true);
622
+ promise.resolve(res);
623
+ }
624
+
625
+ @ReactMethod
626
+ public void logEcomEventProductCategoryViewed(ReadableMap payload, Promise promise) {
627
+ try {
628
+ EcomEvent.ProductCategoryViewed event = RetenoEcomEvent.buildProductCategoryViewedFromPayload(payload);
629
+ if (event == null) {
630
+ promise.reject("Payload Error", "Payload cannot be null");
631
+ return;
632
+ }
633
+ ((RetenoApplication) this.context.getCurrentActivity().getApplication())
634
+ .getRetenoInstance()
635
+ .logEcommerceEvent(event);
636
+ } catch (Exception e) {
637
+ promise.reject("Reteno Android SDK Error", e);
638
+ return;
639
+ }
640
+ WritableMap res = new WritableNativeMap();
641
+ res.putBoolean("success", true);
642
+ promise.resolve(res);
643
+ }
644
+
645
+ @ReactMethod
646
+ public void logEcomEventProductAddedToWishlist(ReadableMap payload, Promise promise) {
647
+ try {
648
+ EcomEvent.ProductAddedToWishlist event = RetenoEcomEvent.buildProductAddedToWishlistFromPayload(payload);
649
+ if (event == null) {
650
+ promise.reject("Payload Error", "Payload cannot be null");
651
+ return;
652
+ }
653
+ ((RetenoApplication) this.context.getCurrentActivity().getApplication())
654
+ .getRetenoInstance()
655
+ .logEcommerceEvent(event);
656
+ } catch (Exception e) {
657
+ promise.reject("Reteno Android SDK Error", e);
658
+ return;
659
+ }
660
+ WritableMap res = new WritableNativeMap();
661
+ res.putBoolean("success", true);
662
+ promise.resolve(res);
663
+ }
664
+
665
+ @ReactMethod
666
+ public void logEcomEventCartUpdated(ReadableMap payload, Promise promise) {
667
+ try {
668
+ EcomEvent.CartUpdated event = RetenoEcomEvent.buildCartUpdatedFromPayload(payload);
669
+ if (event == null) {
670
+ promise.reject("Payload Error", "Payload cannot be null");
671
+ return;
672
+ }
673
+ ((RetenoApplication) this.context.getCurrentActivity().getApplication())
674
+ .getRetenoInstance()
675
+ .logEcommerceEvent(event);
676
+ } catch (Exception e) {
677
+ promise.reject("Reteno Android SDK Error", e);
678
+ return;
679
+ }
680
+ WritableMap res = new WritableNativeMap();
681
+ res.putBoolean("success", true);
682
+ promise.resolve(res);
683
+ }
684
+
685
+ @ReactMethod
686
+ public void logEcomEventOrderCreated(ReadableMap payload, Promise promise) {
687
+ try {
688
+ EcomEvent.OrderCreated event = RetenoEcomEvent.buildOrderCreatedFromPayload(payload);
689
+ if (event == null) {
690
+ promise.reject("Payload Error", "Payload cannot be null");
691
+ return;
692
+ }
693
+ ((RetenoApplication) this.context.getCurrentActivity().getApplication())
694
+ .getRetenoInstance()
695
+ .logEcommerceEvent(event);
696
+ } catch (Exception e) {
697
+ promise.reject("Reteno Android SDK Error", e);
698
+ return;
699
+ }
700
+ WritableMap res = new WritableNativeMap();
701
+ res.putBoolean("success", true);
702
+ promise.resolve(res);
703
+ }
704
+
705
+ @ReactMethod
706
+ public void logEcomEventOrderUpdated(ReadableMap payload, Promise promise) {
707
+ try {
708
+ EcomEvent.OrderUpdated event = RetenoEcomEvent.buildOrderUpdatedFromPayload(payload);
709
+ if (event == null) {
710
+ promise.reject("Payload Error", "Payload cannot be null");
711
+ return;
712
+ }
713
+ ((RetenoApplication) this.context.getCurrentActivity().getApplication())
714
+ .getRetenoInstance()
715
+ .logEcommerceEvent(event);
716
+ } catch (Exception e) {
717
+ promise.reject("Reteno Android SDK Error", e);
718
+ return;
719
+ }
720
+ WritableMap res = new WritableNativeMap();
721
+ res.putBoolean("success", true);
722
+ promise.resolve(res);
723
+ }
724
+
725
+ @ReactMethod
726
+ public void logEcomEventOrderDelivered(ReadableMap payload, Promise promise) {
727
+ try {
728
+ EcomEvent.OrderDelivered event = RetenoEcomEvent.buildOrderDeliveredFromPayload(payload);
729
+ if (event == null) {
730
+ promise.reject("Payload Error", "Payload cannot be null");
731
+ return;
732
+ }
733
+ ((RetenoApplication) this.context.getCurrentActivity().getApplication())
734
+ .getRetenoInstance()
735
+ .logEcommerceEvent(event);
736
+ } catch (Exception e) {
737
+ promise.reject("Reteno Android SDK Error", e);
738
+ return;
739
+ }
740
+ WritableMap res = new WritableNativeMap();
741
+ res.putBoolean("success", true);
742
+ promise.resolve(res);
743
+ }
744
+
745
+ @ReactMethod
746
+ public void logEcomEventOrderCancelled(ReadableMap payload, Promise promise) {
747
+ try {
748
+ EcomEvent.OrderCancelled event = RetenoEcomEvent.buildOrderCancelledFromPayload(payload);
749
+ if (event == null) {
750
+ promise.reject("Payload Error", "Payload cannot be null");
751
+ return;
752
+ }
753
+ ((RetenoApplication) this.context.getCurrentActivity().getApplication())
754
+ .getRetenoInstance()
755
+ .logEcommerceEvent(event);
756
+ } catch (Exception e) {
757
+ promise.reject("Reteno Android SDK Error", e);
758
+ return;
759
+ }
760
+ WritableMap res = new WritableNativeMap();
761
+ res.putBoolean("success", true);
762
+ promise.resolve(res);
763
+ }
764
+
765
+ @ReactMethod
766
+ public void logEcomEventSearchRequest(ReadableMap payload, Promise promise) {
767
+ try {
768
+ EcomEvent.SearchRequest event = RetenoEcomEvent.buildSearchRequestFromPayload(payload);
769
+ if (event == null) {
770
+ promise.reject("Payload Error", "Payload cannot be null");
771
+ return;
772
+ }
773
+ ((RetenoApplication) this.context.getCurrentActivity().getApplication())
774
+ .getRetenoInstance()
775
+ .logEcommerceEvent(event);
776
+ } catch (Exception e) {
777
+ promise.reject("Reteno Android SDK Error", e);
778
+ return;
779
+ }
780
+ WritableMap res = new WritableNativeMap();
781
+ res.putBoolean("success", true);
782
+ promise.resolve(res);
783
+ }
599
784
  }