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

Commit 3a12038

Browse files
Merge pull request #324 from SBD580/master
Use Gson to convert javaObject to jsObject
2 parents 618f74e + c4ceef0 commit 3a12038

File tree

3 files changed

+12
-31
lines changed

3 files changed

+12
-31
lines changed

firebase.android.js

Lines changed: 6 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ firebase._facebookAccessToken = null;
1414
var fbCallbackManager = null;
1515
var GOOGLE_SIGNIN_INTENT_ID = 123;
1616

17+
var gson = new com.google.gson.Gson();
18+
1719
(function() {
1820
if (typeof(com.google.firebase.messaging) === "undefined") {
1921
return;
@@ -107,35 +109,7 @@ firebase.toValue = function(val){
107109
};
108110

109111
firebase.toJsObject = function(javaObj) {
110-
if (javaObj === null || typeof javaObj != "object") {
111-
return javaObj;
112-
}
113-
114-
var node;
115-
switch (javaObj.getClass().getName()) {
116-
case 'java.lang.Boolean':
117-
var str = String(javaObj);
118-
return Boolean(!!(str == "True" || str == "true"));
119-
case 'java.lang.String':
120-
return String(javaObj);
121-
case 'java.lang.Long':
122-
case 'java.lang.Double':
123-
return Number(String(javaObj));
124-
case 'java.util.ArrayList':
125-
node = [];
126-
for (var i = 0; i < javaObj.size(); i++) {
127-
node[i] = firebase.toJsObject(javaObj.get(i));
128-
}
129-
break;
130-
default:
131-
node = {};
132-
var iterator = javaObj.entrySet().iterator();
133-
while (iterator.hasNext()) {
134-
var item = iterator.next();
135-
node[item.getKey()] = firebase.toJsObject(item.getValue());
136-
}
137-
}
138-
return node;
112+
return JSON.parse(gson.toJson(javaObj));
139113
};
140114

141115
firebase.getCallbackData = function(type, snapshot) {
@@ -1401,9 +1375,10 @@ firebase.query = function (updateCallback, path, options) {
14011375
if (options.singleEvent) {
14021376
var listener = new com.google.firebase.database.ValueEventListener({
14031377
onDataChange: function (snapshot) {
1404-
updateCallback(firebase.getCallbackData('ValueChanged', snapshot));
1378+
var data = firebase.getCallbackData('ValueChanged', snapshot);
1379+
updateCallback(data);
14051380
// resolve promise with data in case of single event, see https://github.com/EddyVerbruggen/nativescript-plugin-firebase/issues/126
1406-
resolve(firebase.getCallbackData('ValueChanged', snapshot));
1381+
resolve(data);
14071382
},
14081383
onCancelled: function (databaseError) {
14091384
updateCallback({

platforms/android/include.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ dependencies {
1818
compile "com.google.firebase:firebase-database:10.2.+"
1919
compile "com.google.firebase:firebase-auth:10.2.+"
2020

21+
// for converting Java objects to JS
22+
compile "com.google.code.gson:gson:2.8.+"
23+
2124
// for reading google-services.json and configuration
2225
def googlePlayServicesVersion = project.hasProperty('googlePlayServicesVersion') ? project.googlePlayServicesVersion : '10.2.+'
2326
compile "com.google.android.gms:play-services-base:$googlePlayServicesVersion"

scripts/installer.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,9 @@ dependencies {
269269
compile "com.google.firebase:firebase-database:10.2.+"
270270
compile "com.google.firebase:firebase-auth:10.2.+"
271271
272+
// for converting Java objects to JS
273+
compile "com.google.code.gson:gson:2.8.+"
274+
272275
// for reading google-services.json and configuration
273276
def googlePlayServicesVersion = project.hasProperty('googlePlayServicesVersion') ? project.googlePlayServicesVersion : '10.2.+'
274277
compile "com.google.android.gms:play-services-base:$googlePlayServicesVersion"

0 commit comments

Comments
 (0)