From 7bea0a415535429f9ebc40580f7ec272b7aedd46 Mon Sep 17 00:00:00 2001 From: Salakar Date: Fri, 12 May 2017 17:21:24 +0100 Subject: [PATCH] [android] implement user.providerData --- .../firebase/auth/RNFirebaseAuth.java | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/io/invertase/firebase/auth/RNFirebaseAuth.java b/android/src/main/java/io/invertase/firebase/auth/RNFirebaseAuth.java index a834b009..393d2ec1 100644 --- a/android/src/main/java/io/invertase/firebase/auth/RNFirebaseAuth.java +++ b/android/src/main/java/io/invertase/firebase/auth/RNFirebaseAuth.java @@ -4,6 +4,7 @@ import android.util.Log; import android.net.Uri; import android.support.annotation.NonNull; +import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -12,6 +13,7 @@ import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.WritableArray; import com.facebook.react.bridge.WritableMap; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.ReactContext; @@ -25,6 +27,7 @@ import com.google.firebase.auth.AuthCredential; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.GithubAuthProvider; import com.google.firebase.auth.TwitterAuthProvider; +import com.google.firebase.auth.UserInfo; import com.google.firebase.auth.UserProfileChangeRequest; import com.google.firebase.auth.FacebookAuthProvider; import com.google.firebase.auth.FirebaseAuth; @@ -739,6 +742,35 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule { } + /** + * Converts a List of UserInfo instances into the correct format to match the web sdk + * @param providerData List user.getProviderData() + * @return WritableArray array + */ + private WritableArray convertProviderData(List providerData) { + WritableArray output = Arguments.createArray(); + for (UserInfo userInfo : providerData) { + WritableMap userInfoMap = Arguments.createMap(); + userInfoMap.putString("providerId", userInfo.getProviderId()); + userInfoMap.putString("uid", userInfo.getUid()); + userInfoMap.putString("displayName", userInfo.getDisplayName()); + + final Uri photoUrl = userInfo.getPhotoUrl(); + + if (photoUrl != null) { + userInfoMap.putString("photoURL", photoUrl.toString()); + } else { + userInfoMap.putNull("photoURL"); + } + + userInfoMap.putString("email", userInfo.getEmail()); + + output.pushMap(userInfoMap); + } + + return output; + } + /** * firebaseUserToMap * @@ -778,7 +810,7 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule { userMap.putNull("photoURL"); } - // todo providerData + userMap.putArray("providerData", convertProviderData(user.getProviderData())); return userMap; }