UNPKG

4.58 kBJavaScriptView Raw
1import * as AndroidUtils from './android';
2import { platformCheck } from './platform-check';
3import { numberHasDecimals, numberIs64Bit } from './types';
4export function dataDeserialize(nativeData) {
5 if (nativeData === null || typeof nativeData !== 'object') {
6 return nativeData;
7 }
8 let store;
9 switch (nativeData.getClass().getName()) {
10 case 'java.lang.String': {
11 return String(nativeData);
12 }
13 case 'java.lang.Boolean': {
14 return String(nativeData) === 'true';
15 }
16 case 'java.lang.Float':
17 case 'java.lang.Integer':
18 case 'java.lang.Long':
19 case 'java.lang.Double':
20 case 'java.lang.Short': {
21 return Number(nativeData);
22 }
23 case 'org.json.JSONArray': {
24 store = [];
25 for (let j = 0; j < nativeData.length(); j++) {
26 store[j] = dataDeserialize(nativeData.get(j));
27 }
28 break;
29 }
30 case 'org.json.JSONObject': {
31 store = {};
32 const i = nativeData.keys();
33 let key;
34 while (i.hasNext()) {
35 key = i.next();
36 store[key] = dataDeserialize(nativeData.get(key));
37 }
38 break;
39 }
40 case 'androidx.collection.SimpleArrayMap': {
41 const count = nativeData.size();
42 for (let l = 0; l < count; l++) {
43 const key = nativeData.keyAt(l);
44 store[key] = dataDeserialize(nativeData.get(key));
45 }
46 break;
47 }
48 case 'androidx.collection.ArrayMap':
49 case 'android.os.Bundle':
50 case 'java.util.HashMap':
51 case 'java.util.Map': {
52 store = {};
53 const keys = nativeData.keySet().toArray();
54 for (let k = 0; k < keys.length; k++) {
55 const key = keys[k];
56 store[key] = dataDeserialize(nativeData.get(key));
57 }
58 break;
59 }
60 default:
61 if (typeof nativeData === 'object' && nativeData instanceof java.util.List) {
62 const array = [];
63 const size = nativeData.size();
64 for (let i = 0, n = size; i < n; i++) {
65 array[i] = dataDeserialize(nativeData.get(i));
66 }
67 store = array;
68 }
69 else {
70 store = null;
71 }
72 break;
73 }
74 return store;
75}
76export function dataSerialize(data, wrapPrimitives) {
77 let store;
78 switch (typeof data) {
79 case 'string':
80 case 'boolean': {
81 if (wrapPrimitives) {
82 if (typeof data === 'string') {
83 return new java.lang.String(data);
84 }
85 return new java.lang.Boolean(data);
86 }
87 return data;
88 }
89 case 'number': {
90 const hasDecimals = numberHasDecimals(data);
91 if (numberIs64Bit(data)) {
92 if (hasDecimals) {
93 return java.lang.Double.valueOf(data);
94 }
95 else {
96 return java.lang.Long.valueOf(data);
97 }
98 }
99 else {
100 if (hasDecimals) {
101 return java.lang.Float.valueOf(data);
102 }
103 else {
104 return java.lang.Integer.valueOf(data);
105 }
106 }
107 }
108 case 'object': {
109 if (!data) {
110 return null;
111 }
112 if (data instanceof Date) {
113 return new java.util.Date(data.getTime());
114 }
115 if (Array.isArray(data)) {
116 store = new java.util.ArrayList();
117 data.forEach((item) => store.add(dataSerialize(item, wrapPrimitives)));
118 return store;
119 }
120 if (data.native) {
121 return data.native;
122 }
123 store = new java.util.HashMap();
124 Object.keys(data).forEach((key) => store.put(key, dataSerialize(data[key], wrapPrimitives)));
125 return store;
126 }
127 default:
128 return null;
129 }
130}
131export var android = AndroidUtils;
132/**
133 * @deprecated Use `Utils.android` instead.
134 */
135export var ad = AndroidUtils;
136// these don't exist on Android.Stub them to empty functions.
137export const iOSNativeHelper = platformCheck('Utils.iOSNativeHelper');
138export const ios = platformCheck('Utils.ios');
139//# sourceMappingURL=native-helper.android.js.map
\No newline at end of file