From a3b2f4a3575cff95bb9fdb428ded826ea268964a Mon Sep 17 00:00:00 2001 From: Raaj Gopal Date: Fri, 13 Dec 2024 12:02:02 +0530 Subject: [PATCH] NTP-18531: Autoretry changes for DG and AMC critical flows (#14064) --- .../java/com/naviapp/network/retrofit/RetrofitService.kt | 1 + .../java/com/navi/amc/network/retrofit/NaviHttpClient.kt | 6 ++++++ .../java/com/navi/amc/network/retrofit/RetrofitService.kt | 2 ++ .../firebaseremoteconfig/FirebaseRemoteConfigHelper.kt | 2 ++ .../src/main/res/xml/default_remote_config.xml | 8 ++++++++ .../main/java/com/navi/gold/retrofit/NaviHttpClient.kt | 6 ++++++ .../main/java/com/navi/gold/retrofit/RetrofitService.kt | 6 ++++++ 7 files changed, 31 insertions(+) diff --git a/android/app/src/main/java/com/naviapp/network/retrofit/RetrofitService.kt b/android/app/src/main/java/com/naviapp/network/retrofit/RetrofitService.kt index 39739d67e3..2f88bf7e86 100644 --- a/android/app/src/main/java/com/naviapp/network/retrofit/RetrofitService.kt +++ b/android/app/src/main/java/com/naviapp/network/retrofit/RetrofitService.kt @@ -714,6 +714,7 @@ interface RetrofitService { ): Response> @GET("/alchemist/inflate/v2/{screenId}") + @RetryPolicy(retryCount = 3) suspend fun fetchInvestmentTabScreenResponse( @Header("Accept-Encoding") acceptEncoding: String, @Header("X-Target") target: String, diff --git a/android/navi-amc/src/main/java/com/navi/amc/network/retrofit/NaviHttpClient.kt b/android/navi-amc/src/main/java/com/navi/amc/network/retrofit/NaviHttpClient.kt index 61d34601c4..53aaedf8b4 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/network/retrofit/NaviHttpClient.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/network/retrofit/NaviHttpClient.kt @@ -11,8 +11,11 @@ import android.content.Context import com.chuckerteam.chucker.api.ChuckerCollector import com.chuckerteam.chucker.api.ChuckerInterceptor import com.navi.amc.BuildConfig +import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper +import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.NAVI_AMC_RETRY_POLICY_ENABLED import com.navi.common.model.NetworkInfo import com.navi.common.network.BaseHttpClient +import com.navi.common.network.retry.interceptor.RetryInterceptor import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor @@ -34,6 +37,9 @@ class NaviHttpClient(networkInfo: NetworkInfo, private val context: Context) : ) } } + if (FirebaseRemoteConfigHelper.getBoolean(NAVI_AMC_RETRY_POLICY_ENABLED)) { + okHttpClientBuilder.addInterceptor(RetryInterceptor()) + } okHttpClientBuilder.addInterceptor { val oldRequest = it.request() diff --git a/android/navi-amc/src/main/java/com/navi/amc/network/retrofit/RetrofitService.kt b/android/navi-amc/src/main/java/com/navi/amc/network/retrofit/RetrofitService.kt index 7fb89667d9..383cf2164a 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/network/retrofit/RetrofitService.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/network/retrofit/RetrofitService.kt @@ -25,6 +25,7 @@ import com.navi.common.csat.models.NetPromoterScoreRequest import com.navi.common.model.UploadDataAsyncResponse import com.navi.common.network.models.GenericResponse import com.navi.common.network.models.SuccessResponse +import com.navi.common.network.retry.annotations.RetryPolicy import com.navi.naviwidgets.models.response.CSATResponse import com.navi.payment.model.clientmodels.PostPaymentData import okhttp3.MultipartBody @@ -393,6 +394,7 @@ interface RetrofitService { ): Response>> @GET("/fund/fund-details") + @RetryPolicy(retryCount = 3) suspend fun fetchFundDetails( @Query("isin") isin: String ): Response> diff --git a/android/navi-common/src/main/java/com/navi/common/firebaseremoteconfig/FirebaseRemoteConfigHelper.kt b/android/navi-common/src/main/java/com/navi/common/firebaseremoteconfig/FirebaseRemoteConfigHelper.kt index ffa1dab98a..f61e950b92 100644 --- a/android/navi-common/src/main/java/com/navi/common/firebaseremoteconfig/FirebaseRemoteConfigHelper.kt +++ b/android/navi-common/src/main/java/com/navi/common/firebaseremoteconfig/FirebaseRemoteConfigHelper.kt @@ -53,6 +53,8 @@ object FirebaseRemoteConfigHelper { const val NAVI_UPI_ENABLED = "NAVI_UPI_ENABLED" const val ACCEPT_ENCODING_DEFAULT_VALUE = "ACCEPT_ENCODING_DEFAULT_VALUE" const val UST_IN_GOLD_ENABLED = "UST_IN_GOLD_ENABLED" + const val NAVI_GOLD_RETRY_POLICY_ENABLED = "NAVI_GOLD_RETRY_POLICY_ENABLED" + const val NAVI_AMC_RETRY_POLICY_ENABLED = "NAVI_AMC_RETRY_POLICY_ENABLED" const val UST_IN_AMC_ENABLED = "UST_IN_AMC_ENABLED" const val AMC_CSAT_TIMER_DELAY_IN_SEC = "AMC_CSAT_TIMER_DELAY_IN_SEC" const val AMC_ORDER_STATUS_POLLING_SCREEN_UI_DATA_V2 = diff --git a/android/navi-common/src/main/res/xml/default_remote_config.xml b/android/navi-common/src/main/res/xml/default_remote_config.xml index a7d589a735..76f46956d8 100644 --- a/android/navi-common/src/main/res/xml/default_remote_config.xml +++ b/android/navi-common/src/main/res/xml/default_remote_config.xml @@ -610,4 +610,12 @@ UPI_LITE_MANDATE_INFO_IN_DB_REFRESH_MIN_TIMESTAMP 86400000 + + NAVI_AMC_RETRY_POLICY_ENABLED + false + + + NAVI_GOLD_RETRY_POLICY_ENABLED + false + \ No newline at end of file diff --git a/android/navi-gold/src/main/java/com/navi/gold/retrofit/NaviHttpClient.kt b/android/navi-gold/src/main/java/com/navi/gold/retrofit/NaviHttpClient.kt index e26331ec56..7bb62e3f16 100644 --- a/android/navi-gold/src/main/java/com/navi/gold/retrofit/NaviHttpClient.kt +++ b/android/navi-gold/src/main/java/com/navi/gold/retrofit/NaviHttpClient.kt @@ -11,8 +11,10 @@ import android.content.Context import com.chuckerteam.chucker.api.ChuckerCollector import com.chuckerteam.chucker.api.ChuckerInterceptor import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper +import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.NAVI_GOLD_RETRY_POLICY_ENABLED import com.navi.common.model.NetworkInfo import com.navi.common.network.BaseHttpClient +import com.navi.common.network.retry.interceptor.RetryInterceptor import com.navi.gold.BuildConfig import okhttp3.Interceptor import okhttp3.OkHttpClient @@ -38,6 +40,10 @@ class NaviHttpClient(networkInfo: NetworkInfo, private val context: Context) : } } + if (FirebaseRemoteConfigHelper.getBoolean(NAVI_GOLD_RETRY_POLICY_ENABLED)) { + okHttpClientBuilder.addInterceptor(RetryInterceptor()) + } + okHttpClientBuilder.addInterceptor { val oldRequest = it.request() val newRequest = oldRequest.newBuilder() diff --git a/android/navi-gold/src/main/java/com/navi/gold/retrofit/RetrofitService.kt b/android/navi-gold/src/main/java/com/navi/gold/retrofit/RetrofitService.kt index 451914596a..341acb0146 100644 --- a/android/navi-gold/src/main/java/com/navi/gold/retrofit/RetrofitService.kt +++ b/android/navi-gold/src/main/java/com/navi/gold/retrofit/RetrofitService.kt @@ -16,6 +16,7 @@ import com.navi.common.model.common.InvoiceDownloadData import com.navi.common.model.common.WidgetResponse import com.navi.common.network.models.GenericResponse import com.navi.common.network.models.SuccessResponse +import com.navi.common.network.retry.annotations.RetryPolicy import com.navi.gold.model.AmountDataRequest import com.navi.gold.model.BankBranch import com.navi.gold.model.BankDataResponse @@ -61,11 +62,13 @@ interface RetrofitService { ): Response> @GET("/kuber/sip/setup-sip-page-content") + @RetryPolicy(retryCount = 3) suspend fun getDigitalGoldSetupSipPage( @QueryMap params: Map ): Response> @GET("/kuber/transactions/transaction-history-page-content") + @RetryPolicy(retryCount = 3) suspend fun fetchDigitalGoldTransactionHistory( @QueryMap params: Map ): Response> @@ -111,11 +114,13 @@ interface RetrofitService { ): Response> @GET("/kuber/home/get-home-content") + @RetryPolicy(retryCount = 3) suspend fun getDigitalGoldHome( @QueryMap params: Map ): Response> @POST("/kuber/order/sell") + @RetryPolicy(retryCount = 3) suspend fun getDigitalGoldSellOrder( @Body goldSellOrderRequest: GoldSellOrderRequest ): Response> @@ -146,6 +151,7 @@ interface RetrofitService { ): Response> @GET("/kuber/order/payment-details/get-upi-page-content") + @RetryPolicy(retryCount = 3) suspend fun fetchDigitalGoldSellUpiScreenData( @Query("exchangeRateId") exchangeRateId: String, @Query("amount") amount: Double