14
14
15
15
package com .google .firebase .firestore .auth ;
16
16
17
+ import android .annotation .SuppressLint ;
17
18
import androidx .annotation .GuardedBy ;
18
19
import androidx .annotation .NonNull ;
19
20
import androidx .annotation .Nullable ;
@@ -55,8 +56,9 @@ public final class FirebaseAuthCredentialsProvider extends CredentialsProvider {
55
56
* its {@link Provider#get} method returns {@code null}, but will be changed to a new {@link
56
57
* Provider} once the "auth" module becomes available.
57
58
*/
59
+ @ Nullable
58
60
@ GuardedBy ("this" )
59
- private Provider < InternalAuthProvider > internalAuthProviderProvider = () -> null ;
61
+ private InternalAuthProvider internalAuthProvider ;
60
62
61
63
/** The listener to be notified of credential changes (sign-in / sign-out, token changes). */
62
64
@ Nullable
@@ -71,13 +73,14 @@ public final class FirebaseAuthCredentialsProvider extends CredentialsProvider {
71
73
private boolean forceRefresh ;
72
74
73
75
/** Creates a new FirebaseAuthCredentialsProvider. */
76
+ @ SuppressLint ("ProviderAssignment" ) // TODO: Remove this @SuppressLint once b/181014061 is fixed.
74
77
public FirebaseAuthCredentialsProvider (Deferred <InternalAuthProvider > deferredAuthProvider ) {
75
78
deferredAuthProvider .whenAvailable (
76
79
provider -> {
77
80
synchronized (this ) {
78
- internalAuthProviderProvider = provider ;
81
+ internalAuthProvider = provider . get () ;
79
82
onIdTokenChanged ();
80
- internalAuthProviderProvider . get () .addIdTokenListener (idTokenListener );
83
+ internalAuthProvider .addIdTokenListener (idTokenListener );
81
84
}
82
85
});
83
86
}
@@ -87,12 +90,11 @@ public synchronized Task<String> getToken() {
87
90
boolean doForceRefresh = forceRefresh ;
88
91
forceRefresh = false ;
89
92
90
- InternalAuthProvider internalAuthProvider = internalAuthProviderProvider .get ();
91
93
if (internalAuthProvider == null ) {
92
94
return Tasks .forException (new FirebaseApiNotAvailableException ("auth is not available" ));
93
95
}
94
96
95
- Task <GetTokenResult > res = internalAuthProvider .getAccessToken (doForceRefresh );
97
+ Task <GetTokenResult > res = internalAuthProvider .getAccessToken (forceRefresh );
96
98
97
99
// Take note of the current value of the tokenCounter so that this method can fail (with a
98
100
// FirebaseFirestoreException) if there is a token change while the request is outstanding.
@@ -134,7 +136,6 @@ public synchronized void setChangeListener(@NonNull Listener<User> changeListene
134
136
public synchronized void removeChangeListener () {
135
137
changeListener = null ;
136
138
137
- InternalAuthProvider internalAuthProvider = internalAuthProviderProvider .get ();
138
139
if (internalAuthProvider != null ) {
139
140
internalAuthProvider .removeIdTokenListener (idTokenListener );
140
141
}
@@ -150,7 +151,6 @@ private synchronized void onIdTokenChanged() {
150
151
151
152
/** Returns the current {@link User} as obtained from the given InternalAuthProvider. */
152
153
private synchronized User getUser () {
153
- InternalAuthProvider internalAuthProvider = internalAuthProviderProvider .get ();
154
154
@ Nullable String uid = (internalAuthProvider == null ) ? null : internalAuthProvider .getUid ();
155
155
return uid != null ? new User (uid ) : User .UNAUTHENTICATED ;
156
156
}
0 commit comments