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.
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/retenosdk/RetenoEcomEvent.java +390 -0
- package/android/src/main/java/com/retenosdk/RetenoSdkModule.java +185 -0
- package/ios/RetenoEcomEvent.swift +270 -0
- package/ios/RetenoSdk.m +37 -0
- package/ios/RetenoSdk.swift +146 -0
- package/ios/RetenoSdk.xcodeproj/project.xcworkspace/xcuserdata/oleksandr.vasylkov.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RetenoSdk.xcodeproj/xcuserdata/{artem.chupika.xcuserdatad → oleksandr.vasylkov.xcuserdatad}/xcschemes/xcschememanagement.plist +0 -8
- package/lib/commonjs/index.js +96 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +87 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts +132 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +3 -2
- package/reteno-react-native-sdk.podspec +1 -1
- package/src/index.ts +212 -0
- package/android/app/build/generated/source/codegen/RCTAppDependencyProvider.h +0 -25
- package/android/app/build/generated/source/codegen/RCTAppDependencyProvider.mm +0 -55
- package/android/app/build/generated/source/codegen/RCTModulesConformingToProtocolsProvider.h +0 -18
- package/android/app/build/generated/source/codegen/RCTModulesConformingToProtocolsProvider.mm +0 -33
- package/android/app/build/generated/source/codegen/RCTThirdPartyComponentsProvider.h +0 -16
- package/android/app/build/generated/source/codegen/RCTThirdPartyComponentsProvider.mm +0 -23
- package/android/app/build/generated/source/codegen/ReactAppDependencyProvider.podspec +0 -34
- package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeRetenoSdkSpec.java +0 -172
- package/android/app/build/generated/source/codegen/jni/CMakeLists.txt +0 -36
- package/android/app/build/generated/source/codegen/jni/NativeRetenoSdkSpec-generated.cpp +0 -176
- package/android/app/build/generated/source/codegen/jni/NativeRetenoSdkSpec.h +0 -31
- package/android/app/build/generated/source/codegen/jni/RetenoSdkSpec-generated.cpp +0 -22
- package/android/app/build/generated/source/codegen/jni/RetenoSdkSpec.h +0 -24
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/NativeRetenoSdkSpec/NativeRetenoSdkSpecJSI-generated.cpp +0 -176
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/NativeRetenoSdkSpec/NativeRetenoSdkSpecJSI.h +0 -343
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RetenoSdkSpec/RetenoSdkSpecJSI-generated.cpp +0 -17
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RetenoSdkSpec/RetenoSdkSpecJSI.h +0 -19
- package/ios/RetenoSdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/ios/RetenoSdk.xcodeproj/project.xcworkspace/xcuserdata/artem.chupika.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
package/android/build.gradle
CHANGED
|
@@ -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.
|
|
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
|
}
|