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

Use Gson to convert javaObject to jsObject #324

Merged
merged 3 commits into from
Mar 23, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 6 additions & 31 deletions firebase.android.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ firebase._facebookAccessToken = null;
var fbCallbackManager = null;
var GOOGLE_SIGNIN_INTENT_ID = 123;

var gson = new com.google.gson.Gson();

(function() {
if (typeof(com.google.firebase.messaging) === "undefined") {
return;
Expand Down Expand Up @@ -107,35 +109,7 @@ firebase.toValue = function(val){
};

firebase.toJsObject = function(javaObj) {
if (javaObj === null || typeof javaObj != "object") {
return javaObj;
}

var node;
switch (javaObj.getClass().getName()) {
case 'java.lang.Boolean':
var str = String(javaObj);
return Boolean(!!(str == "True" || str == "true"));
case 'java.lang.String':
return String(javaObj);
case 'java.lang.Long':
case 'java.lang.Double':
return Number(String(javaObj));
case 'java.util.ArrayList':
node = [];
for (var i = 0; i < javaObj.size(); i++) {
node[i] = firebase.toJsObject(javaObj.get(i));
}
break;
default:
node = {};
var iterator = javaObj.entrySet().iterator();
while (iterator.hasNext()) {
var item = iterator.next();
node[item.getKey()] = firebase.toJsObject(item.getValue());
}
}
return node;
return JSON.parse(gson.toJson(javaObj));
};

firebase.getCallbackData = function(type, snapshot) {
Expand Down Expand Up @@ -1401,9 +1375,10 @@ firebase.query = function (updateCallback, path, options) {
if (options.singleEvent) {
var listener = new com.google.firebase.database.ValueEventListener({
onDataChange: function (snapshot) {
updateCallback(firebase.getCallbackData('ValueChanged', snapshot));
var data = firebase.getCallbackData('ValueChanged', snapshot);
updateCallback(data);
// resolve promise with data in case of single event, see https://github.com/EddyVerbruggen/nativescript-plugin-firebase/issues/126
resolve(firebase.getCallbackData('ValueChanged', snapshot));
resolve(data);
},
onCancelled: function (databaseError) {
updateCallback({
Expand Down
3 changes: 3 additions & 0 deletions platforms/android/include.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ dependencies {
compile "com.google.firebase:firebase-database:10.2.+"
compile "com.google.firebase:firebase-auth:10.2.+"

// for converting Java objects to JS
compile "com.google.code.gson:gson:2.8.+"

// for reading google-services.json and configuration
def googlePlayServicesVersion = project.hasProperty('googlePlayServicesVersion') ? project.googlePlayServicesVersion : '10.2.+'
compile "com.google.android.gms:play-services-base:$googlePlayServicesVersion"
Expand Down
3 changes: 3 additions & 0 deletions scripts/installer.js
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,9 @@ dependencies {
compile "com.google.firebase:firebase-database:10.2.+"
compile "com.google.firebase:firebase-auth:10.2.+"

// for converting Java objects to JS
compile "com.google.code.gson:gson:2.8.+"

// for reading google-services.json and configuration
def googlePlayServicesVersion = project.hasProperty('googlePlayServicesVersion') ? project.googlePlayServicesVersion : '10.2.+'
compile "com.google.android.gms:play-services-base:$googlePlayServicesVersion"
Expand Down