diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableAuthManager.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableAuthManager.java index 274d8724b..a61d71415 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableAuthManager.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableAuthManager.java @@ -95,9 +95,11 @@ public void run() { return; } final String authToken = authHandler.onAuthTokenRequested(); + pendingAuth = false; retryCount++; handleAuthTokenSuccess(authToken, successCallback); } catch (final Exception e) { + retryCount++; handleAuthTokenFailure(e); } } @@ -127,7 +129,6 @@ private void handleAuthTokenSuccess(String authToken, IterableHelper.SuccessHand return; } IterableApi.getInstance().setAuthToken(authToken); - pendingAuth = false; reSyncAuth(); authHandler.onTokenRegistrationSuccessful(authToken); } @@ -136,7 +137,7 @@ private void handleAuthTokenFailure(Throwable throwable) { IterableLogger.e(TAG, "Error while requesting Auth Token", throwable); authHandler.onTokenRegistrationFailed(throwable); pendingAuth = false; - reSyncAuth(); + scheduleAuthTokenRefresh(getNextRetryInterval(), false, null); } public void queueExpirationRefresh(String encodedJWT) { @@ -164,7 +165,7 @@ void resetFailedAuth() { void reSyncAuth() { if (requiresAuthRefresh) { requiresAuthRefresh = false; - requestNewAuthToken(false); + scheduleAuthTokenRefresh(getNextRetryInterval(), false, null); } } @@ -178,7 +179,7 @@ long getNextRetryInterval() { } void scheduleAuthTokenRefresh(long timeDuration, boolean isScheduledRefresh, final IterableHelper.SuccessHandler successCallback) { - if (pauseAuthRetry && !isScheduledRefresh && isTimerScheduled) { + if ((pauseAuthRetry && !isScheduledRefresh) || isTimerScheduled) { // we only stop schedule token refresh if it is called from retry (in case of failure). The normal auth token refresh schedule would work return; }