NTP-7163 | App OE - Added api retry for entire app (#14672)

This commit is contained in:
shankar yadav
2025-01-28 18:18:55 +05:30
committed by GitHub
parent 597c59a9c2
commit c98b7dd49d
27 changed files with 203 additions and 146 deletions

View File

@@ -10,6 +10,7 @@ package com.naviapp.network.retrofit
import android.content.Context
import com.chuckerteam.chucker.api.ChuckerCollector
import com.chuckerteam.chucker.api.ChuckerInterceptor
import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.HP_RETRY_INTERCEPTOR_ENABLED
import com.navi.common.model.NetworkInfo
import com.navi.common.network.BaseHttpClient
import com.navi.common.network.retry.interceptor.RetryInterceptor
@@ -24,8 +25,8 @@ class NaviHttpClient(networkInfo: NetworkInfo, context: Context) :
val httpClientBuilder: OkHttpClient.Builder
get() {
val okHttpClientBuilder = baseHttpClientBuilder
if (BuildConfig.DEBUG) {
with(okHttpClientBuilder) {
with(okHttpClientBuilder) {
if (BuildConfig.DEBUG) {
addInterceptor(loggingInterceptor())
addInterceptor(
ChuckerInterceptor.Builder(NaviApplication.instance.applicationContext)
@@ -37,9 +38,9 @@ class NaviHttpClient(networkInfo: NetworkInfo, context: Context) :
.alwaysReadResponseBody(false)
.build()
)
if (isRetryInterceptorEnabled()) {
addInterceptor(RetryInterceptor())
}
}
if (isRetryInterceptorEnabled(HP_RETRY_INTERCEPTOR_ENABLED)) {
addInterceptor(RetryInterceptor())
}
}
return okHttpClientBuilder

View File

@@ -109,11 +109,6 @@ import com.naviapp.payment.models.TransactionDetail
import com.naviapp.screenOverlay.model.OverlayItemsStateUpdates
import com.naviapp.screenOverlay.model.OverlayScreenStructure
import com.naviapp.screenOverlay.model.ScreenOverlayActionUpdateRequest
import java.net.ConnectException
import java.net.SocketTimeoutException
import java.net.UnknownHostException
import javax.net.ssl.SSLHandshakeException
import javax.net.ssl.SSLPeerUnverifiedException
import okhttp3.RequestBody
import retrofit2.Response
import retrofit2.http.Body
@@ -143,6 +138,7 @@ interface RetrofitService {
@Header(HEADER_X_TENANT_ID) tenantId: String,
): Response<GenericResponse<LoginOtpVerifyResponse>>
@RetryPolicy
@POST("/login-service/v1/login")
suspend fun userLogin(
@Body loginRequest: UserLoginRequest,
@@ -202,7 +198,9 @@ interface RetrofitService {
@Query("subProduct") subProduct: String? = null,
): Response<GenericResponse<List<GroupFaq>>>
@POST("/auth/v1/logout") suspend fun logout(): Response<GenericResponse<SuccessResponse>>
@RetryPolicy
@POST("/auth/v1/logout")
suspend fun logout(): Response<GenericResponse<SuccessResponse>>
@GET("/login-settings")
suspend fun fetchLoginSettings(): Response<GenericResponse<LoginSettings>>
@@ -505,6 +503,7 @@ interface RetrofitService {
@Body deviceDetail: DeviceDetail,
): Response<GenericResponse<com.navi.common.network.models.SuccessResponse>>
@RetryPolicy
@GET("/forge/screen/{screenId}")
suspend fun fetchForgeScreen(
@Header(X_IS_SCREEN_LOCK_ENABLED) isScreenLockEnabled: Boolean? = null,
@@ -533,6 +532,7 @@ interface RetrofitService {
@Body request: AlchemistScreenRequest?,
): Response<GenericResponse<AlchemistScreenDefinition>>
@RetryPolicy
@GET("/forge/screen/{screenId}")
suspend fun fetchNotificationForgeScreen(
@Header("Accept-Encoding") acceptEncoding: String,
@@ -546,17 +546,7 @@ interface RetrofitService {
@Body notificationStatusRequest: List<NotificationUpdateStatus>,
): Response<GenericResponse<Unit>>
@RetryPolicy(
retryCount = 3,
retryOn =
[
SocketTimeoutException::class,
UnknownHostException::class,
ConnectException::class,
SSLHandshakeException::class,
SSLPeerUnverifiedException::class,
],
)
@RetryPolicy
@GET("/forge/screen/{screenId}")
suspend fun fetchInsuranceTabForgeScreen(
@Header("Accept-Encoding") acceptEncoding: String,
@@ -564,6 +554,7 @@ interface RetrofitService {
@Path("screenId") screenId: String,
): Response<GenericResponse<InsuranceTabResponse>>
@RetryPolicy
@GET("/forge/screen/{screenId}")
suspend fun fetchTrialDashboardForgeScreen(
@Header("Accept-Encoding") acceptEncoding: String,
@@ -577,6 +568,7 @@ interface RetrofitService {
@QueryMap queryMap: Map<String, String>,
): Response<Any>
@RetryPolicy
@GET("/forge/screen/{screenId}")
suspend fun fetchLendingPermissionScreenResponse(
@Header("Accept-Encoding") acceptEncoding: String,
@@ -610,7 +602,7 @@ interface RetrofitService {
): Response<GenericResponse<ActionData>>
@GET("/alchemist/inflate/v2/{screenId}")
@RetryPolicy(retryCount = 3)
@RetryPolicy
suspend fun fetchInvestmentTabScreenResponse(
@Header("Accept-Encoding") acceptEncoding: String,
@Header("X-Target") target: String,
@@ -628,7 +620,7 @@ interface RetrofitService {
@Header(HEADER_X_PLATFORM) platform: String = Constants.OS_ANDROID,
): Response<GenericResponse<OverlayScreenStructure>>
@RetryPolicy(retryCount = 3)
@RetryPolicy
@PATCH("/nudge/state")
suspend fun updateScreenOverlayElementState(
@Body request: OverlayItemsStateUpdates