iOS update retry request handler to handle string bodies

This commit is contained in:
advplyr 2025-07-07 06:15:51 -05:00
parent 4534ffaead
commit be08efeca3
2 changed files with 28 additions and 7 deletions

View file

@ -102,7 +102,7 @@ public class AbsDatabase: CAPPlugin, CAPBridgedPlugin {
let id = call.getString("serverConnectionConfigId", "")
// Remove refresh token if it exists
secureStorage.removeRefreshToken(serverConnectionConfigId: id)
_ = secureStorage.removeRefreshToken(serverConnectionConfigId: id)
Database.shared.deleteServerConnectionConfig(id: id)
call.resolve()

View file

@ -275,12 +275,33 @@ class ApiClient {
return
}
retryRequest.responseDecodable(of: decodable) { response in
switch response.result {
case .success(let obj):
callback?(obj)
case .failure(let error):
logger.error("retryOriginalRequest: Retry request failed: \(error)")
// Handle the response
retryRequest.response { response in
if let statusCode = response.response?.statusCode, (200...299).contains(statusCode) {
// Check if response has data
if let data = response.data, !data.isEmpty {
// If it is a string return nil (e.g. express returns OK for 200 status codes)
if let responseString = String(data: data, encoding: .utf8) {
logger.log("retryOriginalRequest: Got string response '\(responseString)'")
callback?(nil)
return
}
// If not a string, try JSON
do {
let decodedObject = try JSONDecoder().decode(decodable, from: data)
callback?(decodedObject)
} catch {
logger.error("retryOriginalRequest: JSON decode failed: \(error)")
callback?(nil)
}
} else {
// Empty response
logger.log("retryOriginalRequest: Empty response with success status \(statusCode)")
callback?(nil)
}
} else {
logger.error("retryOriginalRequest: Request failed with status \(response.response?.statusCode ?? 0)")
callback?(nil)
}
}