TP-54268 | HP redirects to ErrorScreenV2Activity when LE throws 503 (#9348)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2019-2023 by Navi Technologies Limited
|
||||
* * Copyright © 2019-2024 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
@@ -41,14 +41,13 @@ import com.naviapp.network.ApiConstants.E_OFFER_EXPIRED
|
||||
import com.naviapp.utils.Constants
|
||||
import com.naviapp.utils.Constants.API_401
|
||||
import com.naviapp.utils.Constants.LOAN_OFFER_EXPIRED
|
||||
import com.naviapp.utils.Constants.SYSTEM_UNDER_MAINTENANCE
|
||||
import com.naviapp.utils.handleError
|
||||
import com.naviapp.utils.isNetworkAvailable
|
||||
import retrofit2.Response
|
||||
import java.net.ConnectException
|
||||
import java.net.SocketTimeoutException
|
||||
import javax.net.ssl.SSLHandshakeException
|
||||
import javax.net.ssl.SSLPeerUnverifiedException
|
||||
import retrofit2.Response
|
||||
|
||||
abstract class ResponseCallback {
|
||||
|
||||
@@ -77,16 +76,15 @@ abstract class ResponseCallback {
|
||||
}
|
||||
if (
|
||||
it.statusCode == API_SUCCESS_CODE ||
|
||||
it.statusCode == API_SUCCESS_CODE_201 ||
|
||||
it.statusCode == API_SUCCESS_CODE_204
|
||||
it.statusCode == API_SUCCESS_CODE_201 ||
|
||||
it.statusCode == API_SUCCESS_CODE_204
|
||||
) {
|
||||
return RepoResult(it.data, null, it.errors, it.warning, it.statusCode)
|
||||
} else if (it.statusCode == API_ERROR_NO_USER_FOUND) {
|
||||
// logged out or session expired here
|
||||
NaviTrackEvent.trackEventOnClickStream(
|
||||
API_401, mapOf(
|
||||
Constants.URL to response.raw()?.request?.url.toString()
|
||||
)
|
||||
API_401,
|
||||
mapOf(Constants.URL to response.raw()?.request?.url.toString())
|
||||
)
|
||||
}
|
||||
return RepoResult(
|
||||
@@ -109,20 +107,20 @@ abstract class ResponseCallback {
|
||||
if (response.code() == API_ERROR_NO_USER_FOUND && BaseUtils.isUserLoggedIn()) {
|
||||
// logged out or session expired here
|
||||
NaviTrackEvent.trackEventOnClickStream(
|
||||
API_401, mapOf(
|
||||
Constants.URL to response.raw()?.request?.url.toString()
|
||||
)
|
||||
API_401,
|
||||
mapOf(Constants.URL to response.raw()?.request?.url.toString())
|
||||
)
|
||||
return RepoResult(
|
||||
error = ErrorMessage(
|
||||
response.code(),
|
||||
response.message(),
|
||||
response.message(),
|
||||
apiUrl = response.raw().request.url.toString(),
|
||||
appRequestId = getRequestIdFromResponse(response),
|
||||
vertical = getVerticalFromResponse(response),
|
||||
cfRay = getCfRayFromResponse(response)
|
||||
)
|
||||
error =
|
||||
ErrorMessage(
|
||||
response.code(),
|
||||
response.message(),
|
||||
response.message(),
|
||||
apiUrl = response.raw().request.url.toString(),
|
||||
appRequestId = getRequestIdFromResponse(response),
|
||||
vertical = getVerticalFromResponse(response),
|
||||
cfRay = getCfRayFromResponse(response)
|
||||
)
|
||||
)
|
||||
} else if (response.code() == API_SUCCESS_CODE_204) {
|
||||
return handleNoResponseBodySuccessResponse(response)
|
||||
@@ -132,10 +130,6 @@ abstract class ResponseCallback {
|
||||
val errorResponse: GenericResponse<T>? =
|
||||
gson.fromJson(response.errorBody()?.charStream(), type)
|
||||
if (response.code() == API_ERROR_SYSTEM_UNDER_MAINTENANCE_CODE) {
|
||||
handleError(
|
||||
errorResponse?.errors,
|
||||
RedirectPageStatus(rejectReason = SYSTEM_UNDER_MAINTENANCE)
|
||||
)
|
||||
return RepoResult()
|
||||
} else if (response.code() == API_ERROR_PEER_UNVERIFIED) {
|
||||
fetchNewKeyFromFirebaseAndRestart()
|
||||
@@ -165,7 +159,10 @@ abstract class ResponseCallback {
|
||||
return RepoResult(null, null, null, null, response.code())
|
||||
}
|
||||
|
||||
private fun <T> handleException(e: Exception, response: Response<GenericResponse<T>>): RepoResult<T> {
|
||||
private fun <T> handleException(
|
||||
e: Exception,
|
||||
response: Response<GenericResponse<T>>
|
||||
): RepoResult<T> {
|
||||
val result = RepoResult<T>()
|
||||
val errorMessage = ErrorMessage()
|
||||
errorMessage.exception = e.message
|
||||
@@ -183,11 +180,15 @@ abstract class ResponseCallback {
|
||||
NaviApplication.instance.applicationContext.getString(R.string.internet_too_slow)
|
||||
errorMessage.statusCode = API_CODE_SOCKET_TIMEOUT
|
||||
} else if (e is SSLHandshakeException || e is SSLPeerUnverifiedException) {
|
||||
NaviTrackEvent.trackEvent(eventName = "SSL Handshake Exception or SSL Peer Unverified Exception occurred. Message: ${e.message}")
|
||||
NaviTrackEvent.trackEvent(
|
||||
eventName =
|
||||
"SSL Handshake Exception or SSL Peer Unverified Exception occurred. Message: ${e.message}"
|
||||
)
|
||||
val isRestartNeeded = fetchNewKeyFromFirebaseAndRestart()
|
||||
NaviTrackEvent.trackEvent(eventName = "Restart needed: $isRestartNeeded")
|
||||
if (isRestartNeeded.not()) {
|
||||
errorMessage.message = CommonLibManager.application.getString(CommonR.string.something_went_wrong)
|
||||
errorMessage.message =
|
||||
CommonLibManager.application.getString(CommonR.string.something_went_wrong)
|
||||
errorMessage.statusCode = ApiConstants.API_CODE_SSL_HANDSHAKE_EXCEPTION
|
||||
}
|
||||
} else {
|
||||
@@ -200,8 +201,6 @@ abstract class ResponseCallback {
|
||||
}
|
||||
|
||||
private fun addApiUrlInErrorResponse(errors: List<GenericErrorResponse>?, apiUrl: String) {
|
||||
errors?.forEach{
|
||||
it.apiUrl = apiUrl
|
||||
}
|
||||
errors?.forEach { it.apiUrl = apiUrl }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user