Skip to content

Commit 55a3e25

Browse files
author
Rodrigo Gomez Palacio
committed
fixup! Update IAM manager & backend service with retry logic, optional headers
1 parent 2083bd0 commit 55a3e25

File tree

1 file changed

+9
-10
lines changed
  • OneSignalSDK/onesignal/in-app-messages/src/main/java/com/onesignal/inAppMessages/internal/backend/impl

1 file changed

+9
-10
lines changed

OneSignalSDK/onesignal/in-app-messages/src/main/java/com/onesignal/inAppMessages/internal/backend/impl/InAppBackendService.kt

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -204,11 +204,11 @@ internal class InAppBackendService(
204204
rywToken: String?,
205205
sessionDurationProvider: () -> Long,
206206
): List<InAppMessage>? {
207-
var attempts = 1
208-
var retryLimit: Int? = null // Retry limit will be determined dynamically
207+
var attempts = 0
208+
var retryLimit: Int = 0 // retry limit is remote defined & set dynamically below
209209

210-
while (retryLimit == null || attempts <= retryLimit + 1) {
211-
val retryCount = if (attempts > 1) attempts - 1 else null
210+
do {
211+
val retryCount = if (attempts > 0) attempts else null
212212
val values =
213213
OptionalHeaders(
214214
rywToken = rywToken,
@@ -221,13 +221,12 @@ internal class InAppBackendService(
221221
val jsonResponse = response.payload?.let { JSONObject(it) }
222222
return jsonResponse?.let { hydrateInAppMessages(it) }
223223
} else if (response.statusCode == 425 || response.statusCode == 429) {
224-
// Dynamically update the retry limit from response
224+
// update the retry limit from response
225225
retryLimit = response.retryLimit ?: retryLimit
226226

227-
// Apply the Retry-After delay if present, otherwise proceed without delay
228-
val retryAfter = response.retryAfterSeconds
229-
if (retryAfter != null) {
230-
delay(retryAfter * 1_000L)
227+
// apply the Retry-After delay if present
228+
response.retryAfterSeconds?.let {
229+
delay(it * 1_000L)
231230
}
232231
} else if (response.statusCode in 500..599) {
233232
return null
@@ -236,7 +235,7 @@ internal class InAppBackendService(
236235
}
237236

238237
attempts++
239-
}
238+
} while (attempts <= retryLimit)
240239

241240
// Final attempt without the RYW token if retries fail
242241
return fetchInAppMessagesWithoutRywToken(baseUrl, sessionDurationProvider)

0 commit comments

Comments
 (0)