Skip to content
This repository was archived by the owner on Apr 4, 2023. It is now read-only.

Commit cfcb105

Browse files
Merge pull request #598 from jr76/master
Added firestore support for JS Dates and Arrays
2 parents 63ecb92 + d1ce468 commit cfcb105

File tree

1 file changed

+38
-16
lines changed

1 file changed

+38
-16
lines changed

src/firebase.android.ts

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -98,32 +98,54 @@ firebase.toHashMap = obj => {
9898
if (obj[property] === null) {
9999
node.put(property, null);
100100
} else {
101-
switch (typeof obj[property]) {
102-
case 'object':
103-
node.put(property, firebase.toHashMap(obj[property], node));
104-
break;
105-
case 'boolean':
106-
node.put(property, java.lang.Boolean.valueOf(String(obj[property])));
107-
break;
108-
case 'number':
109-
if (Number(obj[property]) === obj[property] && obj[property] % 1 === 0)
110-
node.put(property, java.lang.Long.valueOf(String(obj[property])));
111-
else
112-
node.put(property, java.lang.Double.valueOf(String(obj[property])));
113-
break;
114-
case 'string':
115-
node.put(property, String(obj[property]));
116-
break;
101+
if(obj[property] instanceof Date) {
102+
node.put(property, new java.util.Date(obj[property].getTime()));
103+
} else if (Array.isArray(obj[property])){
104+
node.put(property, firebase.toJavaArray(obj[property]));
105+
} else {
106+
switch (typeof obj[property]) {
107+
case 'object':
108+
node.put(property, firebase.toHashMap(obj[property], node));
109+
break;
110+
case 'boolean':
111+
node.put(property, java.lang.Boolean.valueOf(String(obj[property])));
112+
break;
113+
case 'number':
114+
if (Number(obj[property]) === obj[property] && obj[property] % 1 === 0)
115+
node.put(property, java.lang.Long.valueOf(String(obj[property])));
116+
else
117+
node.put(property, java.lang.Double.valueOf(String(obj[property])));
118+
break;
119+
case 'string':
120+
node.put(property, String(obj[property]));
121+
break;
122+
}
117123
}
118124
}
119125
}
120126
}
121127
return node;
122128
};
123129

130+
firebase.toJavaArray = val => {
131+
var javaArray = new java.util.ArrayList();
132+
for(var i = 0; i < val.length; i++) {
133+
javaArray.add(firebase.toValue(val[i]));
134+
}
135+
return javaArray;
136+
};
137+
124138
firebase.toValue = val => {
125139
let returnVal = null;
126140
if (val !== null) {
141+
142+
if(val instanceof Date) {
143+
return new java.util.Date(val.getTime());
144+
}
145+
if(Array.isArray(val)) {
146+
return firebase.toJavaArray(val);
147+
}
148+
127149
switch (typeof val) {
128150
case 'object':
129151
returnVal = firebase.toHashMap(val);

0 commit comments

Comments
 (0)