2
0
mirror of synced 2025-02-17 08:46:43 +00:00

[android] finished refactor of auth() methods, currentUser methods still TODO

This commit is contained in:
Salakar 2017-03-15 20:05:09 +00:00
parent 1874189e15
commit a780f9677d
2 changed files with 98 additions and 89 deletions

View File

@ -1,15 +1,13 @@
package io.invertase.firebase.auth; package io.invertase.firebase.auth;
import android.util.Log; import android.util.Log;
import android.net.Uri;
import android.support.annotation.NonNull;
import java.util.Map; import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import android.net.Uri;
import android.support.annotation.NonNull;
import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactApplicationContext;
@ -36,10 +34,8 @@ import com.google.firebase.auth.GetTokenResult;
import com.google.firebase.auth.GoogleAuthProvider; import com.google.firebase.auth.GoogleAuthProvider;
import com.google.firebase.auth.EmailAuthProvider; import com.google.firebase.auth.EmailAuthProvider;
import io.invertase.firebase.Utils; import io.invertase.firebase.Utils;
@SuppressWarnings("ThrowableResultOfMethodCallIgnored") @SuppressWarnings("ThrowableResultOfMethodCallIgnored")
public class RNFirebaseAuth extends ReactContextBaseJavaModule { public class RNFirebaseAuth extends ReactContextBaseJavaModule {
private final int NO_CURRENT_USER = 100; private final int NO_CURRENT_USER = 100;
@ -48,7 +44,6 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule {
private static final String TAG = "RNFirebaseAuth"; private static final String TAG = "RNFirebaseAuth";
// private Context context;
private ReactContext mReactContext; private ReactContext mReactContext;
private FirebaseAuth mAuth; private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener; private FirebaseAuth.AuthStateListener mAuthListener;
@ -57,8 +52,7 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule {
super(reactContext); super(reactContext);
mReactContext = reactContext; mReactContext = reactContext;
mAuth = FirebaseAuth.getInstance(); mAuth = FirebaseAuth.getInstance();
Log.d(TAG, "RNFirebaseAuth:initialized");
Log.d(TAG, "New RNFirebaseAuth instance");
} }
@Override @Override
@ -71,6 +65,7 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule {
*/ */
@ReactMethod @ReactMethod
public void addAuthStateListener() { public void addAuthStateListener() {
Log.d(TAG, "addAuthStateListener");
if (mAuthListener == null) { if (mAuthListener == null) {
mAuthListener = new FirebaseAuth.AuthStateListener() { mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override @Override
@ -78,13 +73,9 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule {
FirebaseUser user = firebaseAuth.getCurrentUser(); FirebaseUser user = firebaseAuth.getCurrentUser();
WritableMap msgMap = Arguments.createMap(); WritableMap msgMap = Arguments.createMap();
msgMap.putString("eventName", "onAuthStateChanged"); msgMap.putString("eventName", "onAuthStateChanged");
if (user != null) { if (user != null) {
// TODO move to helper
WritableMap userMap = firebaseUserToMap(user);
msgMap.putBoolean("authenticated", true); msgMap.putBoolean("authenticated", true);
msgMap.putMap("user", userMap); msgMap.putMap("user", firebaseUserToMap(user));
Utils.sendEvent(mReactContext, "onAuthStateChanged", msgMap); Utils.sendEvent(mReactContext, "onAuthStateChanged", msgMap);
} else { } else {
msgMap.putBoolean("authenticated", false); msgMap.putBoolean("authenticated", false);
@ -98,17 +89,12 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule {
/** /**
* Removes the current auth state listener * Removes the current auth state listener
*
* @param callback
*/ */
@ReactMethod @ReactMethod
public void removeAuthStateListener(final Callback callback) { public void removeAuthStateListener() {
Log.d(TAG, "removeAuthStateListener");
if (mAuthListener != null) { if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener); mAuth.removeAuthStateListener(mAuthListener);
// TODO move to helper
WritableMap resp = Arguments.createMap();
resp.putString("status", "complete");
callback.invoke(null, resp);
} }
} }
@ -119,6 +105,7 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule {
*/ */
@ReactMethod @ReactMethod
public void signOut(final Promise promise) { public void signOut(final Promise promise) {
Log.d(TAG, "signOut");
if (mAuth == null || mAuth.getCurrentUser() == null) { if (mAuth == null || mAuth.getCurrentUser() == null) {
promiseNoUser(promise, true); promiseNoUser(promise, true);
} else { } else {
@ -237,6 +224,49 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule {
}); });
} }
/**
* sendPasswordResetEmail
*
* @param email
* @param promise
*/
@ReactMethod
public void sendPasswordResetEmail(final String email, final Promise promise) {
Log.d(TAG, "sendPasswordResetEmail");
mAuth.sendPasswordResetEmail(email)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "sendPasswordResetEmail:onComplete:success");
promiseNoUser(promise, false);
} else {
Exception exception = task.getException();
WritableMap error = authExceptionToMap(exception);
Log.e(TAG, "sendPasswordResetEmail:onComplete:failure", exception);
promise.reject(error.getString("code"), error.getString("message"), exception);
}
}
});
}
/**
* getCurrentUser - returns the current user, probably no need for this due to
* js side already listening for user auth changes
*
* @param promise
*/
@ReactMethod
public void getCurrentUser(final Promise promise) {
FirebaseUser user = mAuth.getCurrentUser();
Log.d(TAG, "getCurrentUser");
if (user == null) {
promiseNoUser(promise, false);
} else {
promiseWithUser(user, promise);
}
}
/** /**
* delete * delete
* *
@ -291,6 +321,17 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule {
} }
} }
// ----------------------- CLEAN ME -----------------------------------------------------
// ----------------------- CLEAN ME -----------------------------------------------------
// ----------------------- CLEAN ME -----------------------------------------------------
// ----------------------- CLEAN ME -----------------------------------------------------
// ----------------------- CLEAN ME -----------------------------------------------------
// ----------------------- CLEAN ME -----------------------------------------------------
// ----------------------- CLEAN ME -----------------------------------------------------
// ----------------------- CLEAN ME -----------------------------------------------------
// ----------------------- CLEAN ME -----------------------------------------------------
@ReactMethod @ReactMethod
public void linkPassword(final String email, final String password, final Callback callback) { public void linkPassword(final String email, final String password, final Callback callback) {
FirebaseUser user = mAuth.getCurrentUser(); FirebaseUser user = mAuth.getCurrentUser();
@ -389,27 +430,6 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule {
} }
} }
@ReactMethod
public void sendPasswordResetWithEmail(final String email, final Callback callback) {
mAuth.sendPasswordResetEmail(email)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
try {
if (task.isSuccessful()) {
WritableMap resp = Arguments.createMap();
resp.putString("status", "complete");
callback.invoke(null, resp);
} else {
callback.invoke(task.getException().toString());
}
} catch (Exception ex) {
userExceptionCallback(ex, callback);
}
}
});
}
@ReactMethod @ReactMethod
public void sendEmailVerification(final Callback callback) { public void sendEmailVerification(final Callback callback) {
FirebaseUser user = mAuth.getCurrentUser(); FirebaseUser user = mAuth.getCurrentUser();
@ -540,18 +560,6 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule {
} }
} }
@ReactMethod
public void getCurrentUser(final Callback callback) {
FirebaseUser user = mAuth.getCurrentUser();
if (user == null) {
callbackNoUser(callback, false);
} else {
Log.d("USRC", user.getUid());
userCallback(user, callback);
}
}
// TODO: Check these things // TODO: Check these things
@ReactMethod @ReactMethod
public void googleLogin(String IdToken, final Callback callback) { public void googleLogin(String IdToken, final Callback callback) {
@ -627,34 +635,6 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule {
} }
/**
* @param user
* @param callback
*/
@Deprecated
private void userCallback(final FirebaseUser user, final Callback callback) {
if (user != null) {
user.getToken(true).addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
@Override
public void onComplete(@NonNull Task<GetTokenResult> task) {
try {
if (task.isSuccessful()) {
WritableMap userMap = firebaseUserToMap(user);
userMap.putString("token", task.getResult().getToken());
callback.invoke(null, userMap);
} else {
userErrorCallback(task, callback);
}
} catch (Exception ex) {
userExceptionCallback(ex, callback);
}
}
});
} else {
callbackNoUser(callback, true);
}
}
/** /**
* @param user * @param user
* @return * @return
@ -773,11 +753,38 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule {
return error; return error;
} }
/**
* Returns a no user error. // ------------------ Clean me when no longer used ------------------------------
* // ------------------ Clean me when no longer used ------------------------------
* @param callback JS callback // ------------------ Clean me when no longer used ------------------------------
*/ // ------------------ Clean me when no longer used ------------------------------
// ------------------ Clean me when no longer used ------------------------------
// ------------------ Clean me when no longer used ------------------------------
@Deprecated
private void userCallback(final FirebaseUser user, final Callback callback) {
if (user != null) {
user.getToken(true).addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
@Override
public void onComplete(@NonNull Task<GetTokenResult> task) {
try {
if (task.isSuccessful()) {
WritableMap userMap = firebaseUserToMap(user);
userMap.putString("token", task.getResult().getToken());
callback.invoke(null, userMap);
} else {
userErrorCallback(task, callback);
}
} catch (Exception ex) {
userExceptionCallback(ex, callback);
}
}
});
} else {
callbackNoUser(callback, true);
}
}
@Deprecated @Deprecated
private void callbackNoUser(Callback callback, Boolean isError) { private void callbackNoUser(Callback callback, Boolean isError) {
WritableMap err = Arguments.createMap(); WritableMap err = Arguments.createMap();
@ -791,12 +798,14 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule {
} }
} }
@Deprecated
private void userErrorCallback(Task task, final Callback onFail) { private void userErrorCallback(Task task, final Callback onFail) {
WritableMap error = Arguments.createMap(); WritableMap error = Arguments.createMap();
error.putString("message", ((FirebaseAuthException) task.getException()).getMessage()); error.putString("message", ((FirebaseAuthException) task.getException()).getMessage());
onFail.invoke(error); onFail.invoke(error);
} }
@Deprecated
private void userExceptionCallback(Exception ex, final Callback onFail) { private void userExceptionCallback(Exception ex, final Callback onFail) {
WritableMap error = Arguments.createMap(); WritableMap error = Arguments.createMap();
error.putInt("code", ex.hashCode()); error.putInt("code", ex.hashCode());

View File

@ -146,7 +146,7 @@ export default class Auth extends Base {
* @param {string} email The email to send password reset instructions * @param {string} email The email to send password reset instructions
*/ */
sendPasswordResetEmail(email: string): Promise<Object> { sendPasswordResetEmail(email: string): Promise<Object> {
return promisify('sendPasswordResetWithEmail', FirebaseAuth, 'auth/')(email); return FirebaseAuth.sendPasswordResetEmail(email);
} }
/** /**
@ -154,7 +154,7 @@ export default class Auth extends Base {
* @return {Promise} * @return {Promise}
*/ */
getCurrentUser(): Promise<Object> { getCurrentUser(): Promise<Object> {
return promisify('getCurrentUser', FirebaseAuth, 'auth/')(); return this._interceptUserValue(FirebaseAuth.getCurrentUser());
} }
/** /**