mirror of
https://github.com/zhigang1992/react-native-firebase.git
synced 2026-01-12 22:50:20 +08:00
fix: add observer compatibility to auth APIs
This commit is contained in:
8
packages/auth/lib/index.d.ts
vendored
8
packages/auth/lib/index.d.ts
vendored
@@ -1254,7 +1254,7 @@ export namespace FirebaseAuthTypes {
|
||||
*
|
||||
* @param listener A listener function which triggers when auth state changed (for example signing out).
|
||||
*/
|
||||
onAuthStateChanged(listener: AuthListenerCallback): () => void;
|
||||
onAuthStateChanged(listener: CallbackOrObserver<AuthListenerCallback>): () => void;
|
||||
|
||||
/**
|
||||
* Listen for changes in ID token.
|
||||
@@ -1276,7 +1276,7 @@ export namespace FirebaseAuthTypes {
|
||||
*
|
||||
* @param listener A listener function which triggers when the users ID token changes.
|
||||
*/
|
||||
onIdTokenChanged(listener: AuthListenerCallback): () => void;
|
||||
onIdTokenChanged(listener: CallbackOrObserver<AuthListenerCallback>): () => void;
|
||||
|
||||
/**
|
||||
* Adds a listener to observe changes to the User object. This is a superset of everything from
|
||||
@@ -1302,7 +1302,7 @@ export namespace FirebaseAuthTypes {
|
||||
* @react-native-firebase
|
||||
* @param listener A listener function which triggers when the users data changes.
|
||||
*/
|
||||
onUserChanged(listener: AuthListenerCallback): () => void;
|
||||
onUserChanged(listener: CallbackOrObserver<AuthListenerCallback>): () => void;
|
||||
|
||||
/**
|
||||
* Signs the user out.
|
||||
@@ -1634,6 +1634,8 @@ export namespace FirebaseAuthTypes {
|
||||
}
|
||||
}
|
||||
|
||||
type CallbackOrObserver<T extends (...args: any[]) => any> = T | { next: T };
|
||||
|
||||
declare module '@react-native-firebase/auth' {
|
||||
// tslint:disable-next-line:no-duplicate-imports required otherwise doesn't work
|
||||
import { ReactNativeFirebase } from '@react-native-firebase/app';
|
||||
|
||||
@@ -129,7 +129,14 @@ class FirebaseAuthModule extends FirebaseModule {
|
||||
};
|
||||
}
|
||||
|
||||
onAuthStateChanged(listener) {
|
||||
_parseListener(listenerOrObserver) {
|
||||
return typeof listenerOrObserver === 'object'
|
||||
? listenerOrObserver.next.bind(listenerOrObserver)
|
||||
: listenerOrObserver;
|
||||
}
|
||||
|
||||
onAuthStateChanged(listenerOrObserver) {
|
||||
const listener = this._parseListener(listenerOrObserver);
|
||||
const subscription = this.emitter.addListener(
|
||||
this.eventNameForApp('onAuthStateChanged'),
|
||||
listener,
|
||||
@@ -143,7 +150,8 @@ class FirebaseAuthModule extends FirebaseModule {
|
||||
return () => subscription.remove();
|
||||
}
|
||||
|
||||
onIdTokenChanged(listener) {
|
||||
onIdTokenChanged(listenerOrObserver) {
|
||||
const listener = this._parseListener(listenerOrObserver);
|
||||
const subscription = this.emitter.addListener(
|
||||
this.eventNameForApp('onIdTokenChanged'),
|
||||
listener,
|
||||
@@ -157,7 +165,8 @@ class FirebaseAuthModule extends FirebaseModule {
|
||||
return () => subscription.remove();
|
||||
}
|
||||
|
||||
onUserChanged(listener) {
|
||||
onUserChanged(listenerOrObserver) {
|
||||
const listener = this._parseListener(listenerOrObserver);
|
||||
const subscription = this.emitter.addListener(this.eventNameForApp('onUserChanged'), listener);
|
||||
if (this._authResult) {
|
||||
Promise.resolve().then(() => {
|
||||
|
||||
Reference in New Issue
Block a user