TP-38663 | HPC | add loader optimization (#7595)

Co-authored-by: Shivam Goyal <shivam.goyal@navi.com>
This commit is contained in:
Abhinav Gupta
2023-08-22 18:23:09 +05:30
committed by GitHub
parent 8b6b72b138
commit 4d70f3f086
8 changed files with 42 additions and 8 deletions

View File

@@ -19,6 +19,7 @@ import com.navi.common.network.ApiConstants.API_CODE_SOCKET_TIMEOUT
import com.navi.common.network.ApiConstants.API_ERROR_NO_USER_FOUND
import com.navi.common.network.ApiConstants.NO_INTERNET
import com.navi.common.network.fetchNewKeyFromFirebaseAndRestart
import com.navi.common.network.getCfRayFromResponse
import com.navi.common.network.getRequestIdFromResponse
import com.navi.common.network.getVerticalFromResponse
import com.navi.common.network.models.ErrorMessage
@@ -85,7 +86,8 @@ abstract class ResponseCallback {
it.message,
apiUrl = response.raw().request.url.toString(),
appRequestId = getRequestIdFromResponse(response),
vertical = getVerticalFromResponse(response)
vertical = getVerticalFromResponse(response),
cfRay = getCfRayFromResponse(response)
),
it.errors,
it.warning,
@@ -107,7 +109,8 @@ abstract class ResponseCallback {
response.message(),
apiUrl = response.raw().request.url.toString(),
appRequestId = getRequestIdFromResponse(response),
vertical = getVerticalFromResponse(response)
vertical = getVerticalFromResponse(response),
cfRay = getCfRayFromResponse(response)
)
)
} else if (response.code() == API_SUCCESS_CODE_204) {
@@ -134,7 +137,8 @@ abstract class ResponseCallback {
response.message(),
apiUrl = response.raw().request.url.toString(),
appRequestId = getRequestIdFromResponse(response),
vertical = getVerticalFromResponse(response)
vertical = getVerticalFromResponse(response),
cfRay = getCfRayFromResponse(response)
),
errorResponse?.errors,
null,

View File

@@ -14,6 +14,7 @@ import com.navi.analytics.model.UserLocation
import com.navi.base.model.ActionData
import com.navi.base.model.CtaData
import com.navi.base.model.DropOffInfo
import com.navi.base.utils.SKIP_LOADER
import com.navi.base.utils.USER_DEVICE_DATA_APP_API
import com.navi.base.utils.USER_DEVICE_DATA_LOCATION_API
import com.navi.common.model.*
@@ -1305,6 +1306,7 @@ interface RetrofitService {
@Url url: String,
@QueryMap queryMap: Map<String, String>,
@Body body: RequestBody,
@Header(SKIP_LOADER) skipLoader: Boolean? = true
): Response<Unit>
@GET("/repeat-loan/summary/offer/{offerId}")

View File

@@ -28,3 +28,4 @@ const val UPI_VALIDATION = "UPI_VALIDATION"
const val THOUSAND = 1000L
const val INT_ZERO = 0
const val PAN_VERIFY_POLLING = "PAN_VERIFY_POLLING"
const val SKIP_LOADER = "skipLoader"

View File

@@ -12,9 +12,11 @@ import android.widget.TextView
import com.google.gson.Gson
import com.navi.base.model.AnalyticsEvent
import com.navi.base.model.CtaData
import com.navi.base.utils.AppLaunchUtils.TRUE
import okhttp3.Headers
import org.json.JSONObject
import kotlin.math.ceil
import kotlin.math.floor
import org.json.JSONObject
fun String?.isNotNullAndNotEmpty(): Boolean = !this.isNullOrEmpty()
@@ -102,6 +104,7 @@ val doNotShowLoaderWhenPostSet =
mutableSetOf(
USER_DEVICE_DATA_LOCATION_API,
USER_DEVICE_DATA_APP_API,
"/customer-device/customer/me/async/data-ingestion-status",
"/v1/cards/",
"/customer-device/customer/me/data-ingestion-status",
"/navipay/customer",
@@ -148,8 +151,13 @@ val doNotShowLoaderWhenPostSet =
"/navipay/phone-number/vpa"
)
fun isDataNeedsToUpdate(method: String, url: String, moduleName: String = ""): Boolean {
if (method == "GET") {
fun isDataNeedsToUpdate(
method: String,
url: String,
moduleName: String = "",
headers: Headers? = null
): Boolean {
if (method == "GET" || headers?.get(SKIP_LOADER) == TRUE) {
return isContains(showLoaderWhenGetSet, url)
}

View File

@@ -48,6 +48,7 @@ abstract class BaseHttpClient(
const val HEADER_SESSION_TOKEN = "X-Session-Token"
const val X_TARGET = "X-Target"
const val APPREQUESTID = "appRequestId"
const val CF_RAY = "CF_RAY"
}
val baseHttpClientBuilder: OkHttpClient.Builder
get() {
@@ -106,7 +107,13 @@ abstract class BaseHttpClient(
}
}
request = request.newBuilder().headers(builder.build()).build()
if (isDataNeedsToUpdate(request.method, request.url.toString(), networkInfo.moduleName?.name.orEmpty())) {
if (isDataNeedsToUpdate(
request.method,
request.url.toString(),
networkInfo.moduleName?.name.orEmpty(),
request.headers
)
) {
TemporaryStorageHelper.updateScreenDataStatus()
}
val response: Response = try {

View File

@@ -79,3 +79,12 @@ fun <T> getVerticalFromResponse(response: Response<GenericResponse<T>>): String?
}
return null
}
fun <T> getCfRayFromResponse(response: Response<GenericResponse<T>>): String? {
try {
return response.raw().headers[BaseHttpClient.CF_RAY]
} catch (e: Exception) {
e.log()
}
return null
}

View File

@@ -20,4 +20,5 @@ data class ErrorMessage(
var apiUrl: String? = null,
var appRequestId : String? = null,
var vertical : String? = null,
var cfRay: String? = null,
)

View File

@@ -10,6 +10,7 @@ package com.navi.insurance.network.retrofit
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.navi.common.network.ApiConstants.API_BAD_REQUEST
import com.navi.common.network.getCfRayFromResponse
import com.navi.common.network.getRequestIdFromResponse
import com.navi.common.network.getVerticalFromResponse
import com.navi.common.network.models.ErrorMessage
@@ -34,7 +35,8 @@ abstract class FormResponseCallback : ResponseCallback() {
errorResponse?.message,
errorResponse?.message,
appRequestId = getRequestIdFromResponse(response),
vertical = getVerticalFromResponse(response)
vertical = getVerticalFromResponse(response),
cfRay = getCfRayFromResponse(response)
),
errors = errorResponse?.errors
)