Currently figuring out working with Firebase Auth in Android (MVP). My flow goes something like this:
Activity > Presenter > Interactor > AuthHelper
Activity < Presenter < Interactor < AuthHelper
The Auth Helper class is the sole class that directly interacts with the FirebaseAuth instance. My question is about how the AuthStateListener works in this scenario:
- Interactor has
FirebaseAuth.AuthStateListener Interactor initializes Auth Helper class, passing the
AuthStateListenerclass MyInteractor implements FirebaseAuth.AuthStateListener { FirebaseAuth.AuthStateListener listener; public MyInteractor(){ MyHelper myHelper = new MyHelper(this); listener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { Log.d("TAG", "onAuthStateChanged called"); } }; } public void signOut(){ myHelper.signOut(); } }Helper passes the
FirebaseAuthInstanceto the listenerclass MyHelper { private static FirebaseAuth mAuth; public MyHelper(FirebaseAuth.AuthStateListener listener){ mAuth = FirebaseAuth.getInstance(); listener.onAuthStateChanged(mAuth); } public void signOut(){ mAuth.signOut(); } }myHelper.signOut()is called
Expected result:
onAuthStateChanged() in the interactor would trigger.
Received result:
onAuthStateChanged() is not triggered.
I instead tried a different approach where I passed the mAuth after calling signOut():
public void signOut(){
mAuth.signOut();
listener.onAuthStateChanged(mAuth);
}
This triggers the onAuthStateChanged. Am I missing something here?