From d6a62d62b52c9ea17ac098547fa4d380844e01ca Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Tue, 19 Jul 2022 13:21:55 +0200 Subject: [PATCH] feat(auth, android): add early return --- .../auth/FlutterFirebaseAuthPlugin.java | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/packages/firebase_auth/firebase_auth/android/src/main/java/io/flutter/plugins/firebase/auth/FlutterFirebaseAuthPlugin.java b/packages/firebase_auth/firebase_auth/android/src/main/java/io/flutter/plugins/firebase/auth/FlutterFirebaseAuthPlugin.java index 72e0a9f43efb..97c8e2379d49 100755 --- a/packages/firebase_auth/firebase_auth/android/src/main/java/io/flutter/plugins/firebase/auth/FlutterFirebaseAuthPlugin.java +++ b/packages/firebase_auth/firebase_auth/android/src/main/java/io/flutter/plugins/firebase/auth/FlutterFirebaseAuthPlugin.java @@ -1698,11 +1698,11 @@ private void removeEventListeners() { // Map an id to a MultiFactorSession object. private final Map multiFactorResolverMap = new HashMap<>(); - private MultiFactor getAppMultiFactor( - @NonNull String appName, GeneratedAndroidFirebaseAuth.Result result) { + private MultiFactor getAppMultiFactor(@NonNull String appName) + throws FirebaseNoSignedInUserException { final FirebaseUser currentUser = getCurrentUser(appName); if (currentUser == null) { - result.error(new FirebaseNoSignedInUserException("No user is signed in")); + throw new FirebaseNoSignedInUserException("No user is signed in"); } if (multiFactorUserMap.get(appName) == null) { multiFactorUserMap.put(appName, new HashMap<>()); @@ -1723,7 +1723,13 @@ public void enrollPhone( @NonNull GeneratedAndroidFirebaseAuth.PigeonPhoneMultiFactorAssertion assertion, @Nullable String displayName, GeneratedAndroidFirebaseAuth.Result result) { - final MultiFactor multiFactor = getAppMultiFactor(appName, result); + final MultiFactor multiFactor; + try { + multiFactor = getAppMultiFactor(appName); + } catch (FirebaseNoSignedInUserException e) { + result.error(e); + return; + } PhoneAuthCredential credential = PhoneAuthProvider.getCredential( @@ -1748,7 +1754,13 @@ public void getSession( @NonNull String appName, GeneratedAndroidFirebaseAuth.Result result) { - final MultiFactor multiFactor = getAppMultiFactor(appName, result); + final MultiFactor multiFactor; + try { + multiFactor = getAppMultiFactor(appName); + } catch (FirebaseNoSignedInUserException e) { + result.error(e); + return; + } multiFactor .getSession() @@ -1774,7 +1786,13 @@ public void unenroll( @NonNull String appName, @Nullable String factorUid, GeneratedAndroidFirebaseAuth.Result result) { - final MultiFactor multiFactor = getAppMultiFactor(appName, result); + final MultiFactor multiFactor; + try { + multiFactor = getAppMultiFactor(appName); + } catch (FirebaseNoSignedInUserException e) { + result.error(e); + return; + } multiFactor .unenroll(factorUid) @@ -1793,7 +1811,13 @@ public void getEnrolledFactors( @NonNull String appName, GeneratedAndroidFirebaseAuth.Result> result) { - final MultiFactor multiFactor = getAppMultiFactor(appName, result); + final MultiFactor multiFactor; + try { + multiFactor = getAppMultiFactor(appName); + } catch (FirebaseNoSignedInUserException e) { + result.error(e); + return; + } final List factors = multiFactor.getEnrolledFactors();