Skip to content

Commit e2d3631

Browse files
committed
Addressing ciaran's comment on satisfying immediate getId response.
1 parent 1fd193b commit e2d3631

File tree

4 files changed

+14
-13
lines changed

4 files changed

+14
-13
lines changed

firebase-installations/src/main/java/com/google/firebase/installations/FirebaseInstallations.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ private void triggerOnStateReached(PersistedFidEntry persistedFidEntry) {
189189
Iterator<StateListener> it = listeners.iterator();
190190
while (it.hasNext()) {
191191
StateListener l = it.next();
192-
boolean doneListening = l.onStateReached(persistedFidEntry);
192+
boolean doneListening = l.onStateReached(persistedFidEntry, shouldRefreshAuthToken);
193193
if (doneListening) {
194194
it.remove();
195195
}
@@ -208,18 +208,16 @@ private final void doRegistration() {
208208
persistedFidEntry = persistedFid.readPersistedFidEntryValue();
209209
}
210210

211-
// Always notify the GetIdListeners. For GetAuthTokenListeners, only notify if force
212-
// refreshing auth token is not required.
213-
synchronized (lock) {
214-
if (!shouldRefreshAuthToken) {
215-
triggerOnStateReached(persistedFidEntry);
216-
}
217-
}
211+
triggerOnStateReached(persistedFidEntry);
218212

219213
// FID needs to be registered
220214
if (persistedFidEntry.isUnregistered()) {
221215
registerAndSaveFid(persistedFidEntry);
222216
persistedFidEntry = persistedFid.readPersistedFidEntryValue();
217+
// Newly registered Fid will have valid auth token. No refresh required.
218+
synchronized (lock) {
219+
shouldRefreshAuthToken = false;
220+
}
223221
}
224222

225223
// Don't notify the listeners at this point; we might as well make ure the auth token is up
@@ -235,10 +233,10 @@ private final void doRegistration() {
235233
// Refresh Auth token if needed
236234
if (needRefresh) {
237235
fetchAuthTokenFromServer(persistedFidEntry);
236+
persistedFidEntry = persistedFid.readPersistedFidEntryValue();
238237
synchronized (lock) {
239238
shouldRefreshAuthToken = false;
240239
}
241-
persistedFidEntry = persistedFid.readPersistedFidEntryValue();
242240
}
243241

244242
triggerOnStateReached(persistedFidEntry);

firebase-installations/src/main/java/com/google/firebase/installations/GetAuthTokenListener.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,12 @@ public GetAuthTokenListener(
2828
}
2929

3030
@Override
31-
public boolean onStateReached(PersistedFidEntry persistedFidEntry) {
31+
public boolean onStateReached(
32+
PersistedFidEntry persistedFidEntry, boolean shouldRefreshAuthToken) {
3233
// AuthTokenListener state is reached when FID is registered and has a valid auth token
33-
if (persistedFidEntry.isRegistered() && !utils.isAuthTokenExpired(persistedFidEntry)) {
34+
if (persistedFidEntry.isRegistered()
35+
&& !utils.isAuthTokenExpired(persistedFidEntry)
36+
&& !shouldRefreshAuthToken) {
3437
resultTaskCompletionSource.setResult(
3538
InstallationTokenResult.builder()
3639
.setToken(persistedFidEntry.getAuthToken())

firebase-installations/src/main/java/com/google/firebase/installations/GetIdListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public GetIdListener(TaskCompletionSource<String> taskCompletionSource) {
2525
}
2626

2727
@Override
28-
public boolean onStateReached(PersistedFidEntry persistedFidEntry) {
28+
public boolean onStateReached(PersistedFidEntry persistedFidEntry, boolean unused) {
2929
if (persistedFidEntry.isUnregistered() || persistedFidEntry.isRegistered()) {
3030
taskCompletionSource.setResult(persistedFidEntry.getFirebaseInstallationId());
3131
return true;

firebase-installations/src/main/java/com/google/firebase/installations/StateListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@
1717
import com.google.firebase.installations.local.PersistedFidEntry;
1818

1919
interface StateListener {
20-
boolean onStateReached(PersistedFidEntry persistedFidEntry);
20+
boolean onStateReached(PersistedFidEntry persistedFidEntry, boolean shouldRefreshAuthToken);
2121
}

0 commit comments

Comments
 (0)