mirror of
https://github.com/zhigang1992/react-native-firebase.git
synced 2026-04-24 04:24:52 +08:00
[auth] Add onIdTokenChanged method
This commit is contained in:
@@ -54,6 +54,7 @@ class RNFirebaseAuth extends ReactContextBaseJavaModule {
|
||||
private String mVerificationId;
|
||||
private ReactContext mReactContext;
|
||||
private HashMap<String, FirebaseAuth.AuthStateListener> mAuthListeners = new HashMap<>();
|
||||
private HashMap<String, FirebaseAuth.IdTokenListener> mIdTokenListeners = new HashMap<>();
|
||||
|
||||
|
||||
RNFirebaseAuth(ReactApplicationContext reactContext) {
|
||||
@@ -88,11 +89,11 @@ class RNFirebaseAuth extends ReactContextBaseJavaModule {
|
||||
msgMap.putBoolean("authenticated", true);
|
||||
msgMap.putString("appName", appName); // for js side distribution
|
||||
msgMap.putMap("user", firebaseUserToMap(user));
|
||||
Utils.sendEvent(mReactContext, "onAuthStateChanged", msgMap);
|
||||
Utils.sendEvent(mReactContext, "auth_state_changed", msgMap);
|
||||
} else {
|
||||
msgMap.putString("appName", appName); // for js side distribution
|
||||
msgMap.putBoolean("authenticated", false);
|
||||
Utils.sendEvent(mReactContext, "onAuthStateChanged", msgMap);
|
||||
Utils.sendEvent(mReactContext, "auth_state_changed", msgMap);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -120,6 +121,58 @@ class RNFirebaseAuth extends ReactContextBaseJavaModule {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new id token listener - if one doesn't exist already
|
||||
*/
|
||||
@ReactMethod
|
||||
public void addIdTokenListener(final String appName) {
|
||||
Log.d(TAG, "addIdTokenListener");
|
||||
|
||||
FirebaseApp firebaseApp = FirebaseApp.getInstance(appName);
|
||||
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance(firebaseApp);
|
||||
|
||||
if (!mIdTokenListeners.containsKey(appName)) {
|
||||
FirebaseAuth.IdTokenListener newIdTokenListener = new FirebaseAuth.IdTokenListener() {
|
||||
@Override
|
||||
public void onIdTokenChanged(@NonNull FirebaseAuth firebaseAuth) {
|
||||
FirebaseUser user = firebaseAuth.getCurrentUser();
|
||||
WritableMap msgMap = Arguments.createMap();
|
||||
if (user != null) {
|
||||
msgMap.putBoolean("authenticated", true);
|
||||
msgMap.putString("appName", appName); // for js side distribution
|
||||
msgMap.putMap("user", firebaseUserToMap(user));
|
||||
Utils.sendEvent(mReactContext, "auth_id_token_changed", msgMap);
|
||||
} else {
|
||||
msgMap.putString("appName", appName); // for js side distribution
|
||||
msgMap.putBoolean("authenticated", false);
|
||||
Utils.sendEvent(mReactContext, "auth_id_token_changed", msgMap);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
firebaseAuth.addIdTokenListener(newIdTokenListener);
|
||||
mIdTokenListeners.put(appName, newIdTokenListener);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the current id token listener
|
||||
*/
|
||||
@ReactMethod
|
||||
public void removeIdTokenListener(String appName) {
|
||||
Log.d(TAG, "removeIdTokenListener");
|
||||
|
||||
FirebaseApp firebaseApp = FirebaseApp.getInstance(appName);
|
||||
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance(firebaseApp);
|
||||
|
||||
FirebaseAuth.IdTokenListener mIdTokenListener = mIdTokenListeners.get(appName);
|
||||
|
||||
if (mIdTokenListener != null) {
|
||||
firebaseAuth.removeIdTokenListener(mIdTokenListener);
|
||||
mIdTokenListeners.remove(appName);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* signOut
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user