@dashx/react-native 1.0.2 → 1.0.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.
- package/android/build.gradle +2 -3
- package/android/src/main/AndroidManifest.xml +1 -2
- package/android/src/main/java/com/dashx/rn/sdk/DashXReactNativeModule.kt +20 -22
- package/android/src/main/java/com/dashx/rn/sdk/util/ArrayUtil.java +0 -32
- package/android/src/main/java/com/dashx/rn/sdk/util/MapUtil.java +6 -32
- package/index.js +18 -2
- package/ios/DashX.swift +10 -3
- package/ios/DashXReactNative.m +1 -0
- package/package.json +5 -2
package/android/build.gradle
CHANGED
|
@@ -31,8 +31,8 @@ class DashXReactNativeModule(private val reactContext: ReactApplicationContext)
|
|
|
31
31
|
|
|
32
32
|
@ReactMethod
|
|
33
33
|
fun configure(options: ReadableMap) {
|
|
34
|
-
dashXClient = DashX.
|
|
35
|
-
reactContext,
|
|
34
|
+
dashXClient = DashX.configure(
|
|
35
|
+
reactContext,
|
|
36
36
|
options.getString("publicKey")!!,
|
|
37
37
|
options.getStringIfPresent("baseURI"),
|
|
38
38
|
options.getStringIfPresent("targetEnvironment")
|
|
@@ -41,7 +41,7 @@ class DashXReactNativeModule(private val reactContext: ReactApplicationContext)
|
|
|
41
41
|
|
|
42
42
|
@ReactMethod
|
|
43
43
|
fun identify(options: ReadableMap?) {
|
|
44
|
-
val optionsHashMap =
|
|
44
|
+
val optionsHashMap = options?.toHashMap()
|
|
45
45
|
dashXClient?.identify(optionsHashMap as HashMap<String, String>?)
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -58,7 +58,7 @@ class DashXReactNativeModule(private val reactContext: ReactApplicationContext)
|
|
|
58
58
|
@ReactMethod
|
|
59
59
|
fun track(event: String, data: ReadableMap?) {
|
|
60
60
|
val jsonData = try {
|
|
61
|
-
|
|
61
|
+
data?.toHashMap() as HashMap<String, String>
|
|
62
62
|
} catch (e: Exception) {
|
|
63
63
|
DashXLog.d(tag, e.message)
|
|
64
64
|
return
|
|
@@ -69,7 +69,7 @@ class DashXReactNativeModule(private val reactContext: ReactApplicationContext)
|
|
|
69
69
|
|
|
70
70
|
@ReactMethod
|
|
71
71
|
fun screen(screenName: String, data: ReadableMap?) {
|
|
72
|
-
dashXClient?.screen(screenName,
|
|
72
|
+
dashXClient?.screen(screenName, data?.toHashMap() as HashMap<String, String>)
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
@ReactMethod
|
|
@@ -185,6 +185,21 @@ class DashXReactNativeModule(private val reactContext: ReactApplicationContext)
|
|
|
185
185
|
)
|
|
186
186
|
}
|
|
187
187
|
|
|
188
|
+
@ReactMethod
|
|
189
|
+
fun saveStoredPreferences(preferenceData: ReadableMap?, promise: Promise) {
|
|
190
|
+
val preferencesString = MapUtil.toJSONElement(preferenceData).toString()
|
|
191
|
+
|
|
192
|
+
dashXClient?.saveStoredPreferences(
|
|
193
|
+
preferencesString,
|
|
194
|
+
onError = {
|
|
195
|
+
promise.reject("EUNSPECIFIED", it)
|
|
196
|
+
},
|
|
197
|
+
onSuccess = { content ->
|
|
198
|
+
promise.resolve(convertJsonToMap(content))
|
|
199
|
+
}
|
|
200
|
+
)
|
|
201
|
+
}
|
|
202
|
+
|
|
188
203
|
@ReactMethod
|
|
189
204
|
fun uploadExternalAsset(
|
|
190
205
|
file: ReadableMap,
|
|
@@ -215,23 +230,6 @@ class DashXReactNativeModule(private val reactContext: ReactApplicationContext)
|
|
|
215
230
|
)
|
|
216
231
|
}
|
|
217
232
|
|
|
218
|
-
@ReactMethod
|
|
219
|
-
fun externalAsset(
|
|
220
|
-
id: String,
|
|
221
|
-
promise: Promise
|
|
222
|
-
) {
|
|
223
|
-
dashXClient?.externalAsset(
|
|
224
|
-
id,
|
|
225
|
-
onError = {
|
|
226
|
-
promise.reject("EUNSPECIFIED", it)
|
|
227
|
-
},
|
|
228
|
-
onSuccess = { content ->
|
|
229
|
-
val jsonObject = Gson().toJsonTree(content, ExternalAsset::class.java).asJsonObject
|
|
230
|
-
promise.resolve(convertJsonToMap(jsonObject))
|
|
231
|
-
}
|
|
232
|
-
)
|
|
233
|
-
}
|
|
234
|
-
|
|
235
233
|
@ReactMethod
|
|
236
234
|
fun subscribe() {
|
|
237
235
|
dashXClient?.subscribe()
|
|
@@ -43,38 +43,6 @@ import org.json.JSONObject;
|
|
|
43
43
|
import org.json.JSONException;
|
|
44
44
|
|
|
45
45
|
public class ArrayUtil {
|
|
46
|
-
|
|
47
|
-
public static JSONArray toJSONArray(ReadableArray readableArray) throws JSONException {
|
|
48
|
-
JSONArray jsonArray = new JSONArray();
|
|
49
|
-
|
|
50
|
-
for (int i = 0; i < readableArray.size(); i++) {
|
|
51
|
-
ReadableType type = readableArray.getType(i);
|
|
52
|
-
|
|
53
|
-
switch (type) {
|
|
54
|
-
case Null:
|
|
55
|
-
jsonArray.put(i, null);
|
|
56
|
-
break;
|
|
57
|
-
case Boolean:
|
|
58
|
-
jsonArray.put(i, readableArray.getBoolean(i));
|
|
59
|
-
break;
|
|
60
|
-
case Number:
|
|
61
|
-
jsonArray.put(i, readableArray.getDouble(i));
|
|
62
|
-
break;
|
|
63
|
-
case String:
|
|
64
|
-
jsonArray.put(i, readableArray.getString(i));
|
|
65
|
-
break;
|
|
66
|
-
case Map:
|
|
67
|
-
jsonArray.put(i, MapUtil.toJSONObject(readableArray.getMap(i)));
|
|
68
|
-
break;
|
|
69
|
-
case Array:
|
|
70
|
-
jsonArray.put(i, ArrayUtil.toJSONArray(readableArray.getArray(i)));
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return jsonArray;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
46
|
public static Object[] toArray(JSONArray jsonArray) throws JSONException {
|
|
79
47
|
Object[] array = new Object[jsonArray.length()];
|
|
80
48
|
|
|
@@ -32,6 +32,9 @@ import com.facebook.react.bridge.ReadableMap;
|
|
|
32
32
|
import com.facebook.react.bridge.ReadableMapKeySetIterator;
|
|
33
33
|
import com.facebook.react.bridge.ReadableType;
|
|
34
34
|
import com.facebook.react.bridge.WritableMap;
|
|
35
|
+
import com.google.gson.Gson;
|
|
36
|
+
import com.google.gson.JsonElement;
|
|
37
|
+
import com.google.gson.JsonNull;
|
|
35
38
|
|
|
36
39
|
import java.util.Map;
|
|
37
40
|
import java.util.HashMap;
|
|
@@ -43,38 +46,9 @@ import org.json.JSONException;
|
|
|
43
46
|
|
|
44
47
|
public class MapUtil {
|
|
45
48
|
|
|
46
|
-
public static
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
ReadableMapKeySetIterator iterator = readableMap.keySetIterator();
|
|
50
|
-
|
|
51
|
-
while (iterator.hasNextKey()) {
|
|
52
|
-
String key = iterator.nextKey();
|
|
53
|
-
ReadableType type = readableMap.getType(key);
|
|
54
|
-
|
|
55
|
-
switch (type) {
|
|
56
|
-
case Null:
|
|
57
|
-
jsonObject.put(key, null);
|
|
58
|
-
break;
|
|
59
|
-
case Boolean:
|
|
60
|
-
jsonObject.put(key, readableMap.getBoolean(key));
|
|
61
|
-
break;
|
|
62
|
-
case Number:
|
|
63
|
-
jsonObject.put(key, readableMap.getDouble(key));
|
|
64
|
-
break;
|
|
65
|
-
case String:
|
|
66
|
-
jsonObject.put(key, readableMap.getString(key));
|
|
67
|
-
break;
|
|
68
|
-
case Map:
|
|
69
|
-
jsonObject.put(key, MapUtil.toJSONObject(readableMap.getMap(key)));
|
|
70
|
-
break;
|
|
71
|
-
case Array:
|
|
72
|
-
jsonObject.put(key, ArrayUtil.toJSONArray(readableMap.getArray(key)));
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return jsonObject;
|
|
49
|
+
public static JsonElement toJSONElement(ReadableMap readableMap) throws JSONException {
|
|
50
|
+
HashMap<String, Object> hashMap = readableMap.toHashMap();
|
|
51
|
+
return new Gson().toJsonTree(hashMap);
|
|
78
52
|
}
|
|
79
53
|
|
|
80
54
|
public static Map<String, Object> toMap(JSONObject jsonObject) throws JSONException {
|
package/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { NativeEventEmitter, NativeModules } from "react-native";
|
|
2
2
|
import { parseFilterObject, toContentSingleton } from "./utils";
|
|
3
|
+
import { getRealPathFromURI } from "react-native-get-real-path";
|
|
3
4
|
|
|
4
5
|
import ContentOptionsBuilder from "./ContentOptionsBuilder";
|
|
5
6
|
|
|
@@ -16,6 +17,8 @@ const {
|
|
|
16
17
|
uploadExternalAsset,
|
|
17
18
|
prepareExternalAsset,
|
|
18
19
|
externalAsset,
|
|
20
|
+
fetchStoredPreferences,
|
|
21
|
+
saveStoredPreferences,
|
|
19
22
|
} = DashX;
|
|
20
23
|
|
|
21
24
|
DashX.identify = (options) => {
|
|
@@ -50,8 +53,13 @@ DashX.fetchContent = (contentType, options) => {
|
|
|
50
53
|
return fetchContent(contentType, options);
|
|
51
54
|
};
|
|
52
55
|
|
|
53
|
-
DashX.uploadExternalAsset = (file, externalColumnId) => {
|
|
54
|
-
|
|
56
|
+
DashX.uploadExternalAsset = async (file, externalColumnId) => {
|
|
57
|
+
// Convert content uri to file uri
|
|
58
|
+
if (file.uri.startsWith("content://")) {
|
|
59
|
+
file.uri = `file://${await getRealPathFromURI(file.uri)}`;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return uploadExternalAsset(file, externalColumnId);
|
|
55
63
|
};
|
|
56
64
|
|
|
57
65
|
DashX.prepareExternalAsset = (externalColumnId) => {
|
|
@@ -62,6 +70,14 @@ DashX.externalAsset = (assetId) => {
|
|
|
62
70
|
return externalAsset(assetId);
|
|
63
71
|
};
|
|
64
72
|
|
|
73
|
+
DashX.fetchStoredPreferences = () => {
|
|
74
|
+
return fetchStoredPreferences();
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
DashX.saveStoredPreferences = (preferenceData) => {
|
|
78
|
+
return saveStoredPreferences(preferenceData);
|
|
79
|
+
};
|
|
80
|
+
|
|
65
81
|
DashX.onMessageReceived = (callback) => {
|
|
66
82
|
dashXEventEmitter.addListener("messageReceived", callback);
|
|
67
83
|
};
|
package/ios/DashX.swift
CHANGED
|
@@ -92,7 +92,6 @@ class DashXReactNative: RCTEventEmitter {
|
|
|
92
92
|
|
|
93
93
|
@objc(addItemToCart:pricingId:quantity:reset:custom:resolver:rejecter:)
|
|
94
94
|
func addItemToCart(_ itemId: String, _ pricingId: String, _ quantity: String, _ reset: Bool, _ custom: NSDictionary?, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
95
|
-
|
|
96
95
|
dashXClient.addItemToCart(
|
|
97
96
|
itemId: itemId,
|
|
98
97
|
pricingId: pricingId,
|
|
@@ -106,7 +105,6 @@ class DashXReactNative: RCTEventEmitter {
|
|
|
106
105
|
|
|
107
106
|
@objc(fetchCart:rejecter:)
|
|
108
107
|
func fetchCart(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
109
|
-
|
|
110
108
|
dashXClient.fetchCart(
|
|
111
109
|
successCallback: CBU.resolveToSuccessCallback(resolve),
|
|
112
110
|
failureCallback: CBU.rejectToFailureCallback(reject)
|
|
@@ -115,13 +113,22 @@ class DashXReactNative: RCTEventEmitter {
|
|
|
115
113
|
|
|
116
114
|
@objc(fetchStoredPreferences:rejecter:)
|
|
117
115
|
func fetchStoredPreferences(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
118
|
-
|
|
119
116
|
dashXClient.fetchStoredPreferences(
|
|
120
117
|
successCallback: CBU.resolveToSuccessCallback(resolve),
|
|
121
118
|
failureCallback: CBU.rejectToFailureCallback(reject)
|
|
122
119
|
)
|
|
123
120
|
}
|
|
124
121
|
|
|
122
|
+
@objc(saveStoredPreferences:resolve:rejecter:)
|
|
123
|
+
func saveStoredPreferences(_ preferenceData: NSDictionary, _ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
124
|
+
dashXClient.saveStoredPreferences(
|
|
125
|
+
preferenceData: preferenceData,
|
|
126
|
+
successCallback: CBU.resolveToSuccessCallback(resolve),
|
|
127
|
+
failureCallback: CBU.rejectToFailureCallback(reject)
|
|
128
|
+
)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
|
|
125
132
|
@objc(uploadExternalAsset:externalColumnId:resolver:rejecter:)
|
|
126
133
|
func uploadExternalAsset(_ file: NSDictionary, _ externalColumnId: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
127
134
|
if let fileDictionary = file as? [String: Any], let fileURI = fileDictionary["uri"] as? String {
|
package/ios/DashXReactNative.m
CHANGED
|
@@ -18,6 +18,7 @@ RCT_EXTERN_METHOD(fetchContent:(NSString *)urn options:(NSDictionary *)options r
|
|
|
18
18
|
RCT_EXTERN_METHOD(addItemToCart:(NSString *)itemId pricingId:(NSString *)pricingId quantity:(NSString *)quantity reset:(BOOL)reset custom:(NSDictionary *)custom resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
19
19
|
RCT_EXTERN_METHOD(fetchCart:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
20
20
|
RCT_EXTERN_METHOD(fetchStoredPreferences:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
21
|
+
RCT_EXTERN_METHOD(saveStoredPreferences:(NSDictionary *)preferenceData resolve:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
21
22
|
RCT_EXTERN_METHOD(uploadExternalAsset:(NSDictionary *)file externalColumnId:(NSString *)externalColumnId resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
22
23
|
RCT_EXTERN_METHOD(externalAsset:(NSString *)assetId resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
23
24
|
RCT_EXTERN_METHOD(subscribe)
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dashx/react-native",
|
|
3
3
|
"title": "DashX React Native",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.3",
|
|
5
5
|
"description": "DashX SDK for React Native",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"files": [
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"repository": {
|
|
20
20
|
"type": "git",
|
|
21
|
-
"url": "
|
|
21
|
+
"url": "https://github.com/dashxhq/dashx-react-native"
|
|
22
22
|
},
|
|
23
23
|
"keywords": [
|
|
24
24
|
"react-native"
|
|
@@ -35,5 +35,8 @@
|
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"eslint": "^8.21.0",
|
|
37
37
|
"eslint-plugin-react": "^7.30.1"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"react-native-get-real-path": "github:Wraptime/react-native-get-real-path"
|
|
38
41
|
}
|
|
39
42
|
}
|