TP-54268 | HP redirects to ErrorScreenV2Activity when LE throws 503 (#9348)

This commit is contained in:
Shivam Goyal
2024-01-12 17:07:17 +05:30
committed by GitHub
parent 521ea1fd14
commit 8ae76ef7a0

View File

@@ -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 }
}
}