TP-78987 | Owais | deprecated Alfred network failure receiver (#12155)

This commit is contained in:
Sayed Owais Ali
2024-08-26 12:51:04 +05:30
committed by GitHub
parent 2cba7b3cc0
commit 6733cd6ee5
7 changed files with 35 additions and 85 deletions

View File

@@ -8,8 +8,17 @@
package com.naviapp.analytics.utils
import com.navi.alfred.network.AlfredApiLogsProvider
import com.navi.analytics.utils.NaviAnalyticsHelper
import com.navi.analytics.utils.NaviTrackEvent
import com.navi.base.utils.NetWatchManger
import com.navi.base.utils.isNotNullAndNotEmpty
import com.navi.common.constants.API_URL
import com.navi.common.constants.APP_REQUEST_ID
import com.navi.common.constants.CODE_TEXT
import com.navi.common.constants.MESSAGE_TEXT
import com.navi.common.constants.NETWORK_CRASH
import com.navi.common.constants.VERTICAL
import com.navi.common.constants.X_TARGET
import com.navi.common.model.common.ErrorLog
import com.navi.common.utils.log
import com.naviapp.utils.Constants
@@ -18,7 +27,7 @@ import okhttp3.Response
import org.json.JSONObject
class AlfredApiLogsProviderImpl : AlfredApiLogsProvider {
override fun sendApiLog(request: Request, response: Response) {
override fun sendApiLog(request: Request, response: Response, exception: Exception?) {
if (NetWatchManger.isQaRelease()) {
try {
val responseString = response.peekBody(Long.MAX_VALUE).string()
@@ -41,5 +50,23 @@ class AlfredApiLogsProviderImpl : AlfredApiLogsProvider {
e.log()
}
}
if (exception != null) {
try {
NaviAnalyticsHelper.recordException(exception)
NaviTrackEvent.trackEventOnClickStream(
NETWORK_CRASH,
mapOf(
Pair(MESSAGE_TEXT, exception.message.orEmpty()),
Pair(CODE_TEXT, response.code.toString()),
Pair(API_URL, request.url.toString()),
Pair(VERTICAL, request.headers[X_TARGET] ?: ""),
Pair(APP_REQUEST_ID, request.headers[APP_REQUEST_ID] ?: "")
)
)
} catch (e: Exception) {
e.log()
}
}
}
}

View File

@@ -10,12 +10,9 @@ package com.naviapp.analytics.utils
import android.app.ActivityManager
import android.app.Application
import android.content.Context
import android.content.Context.RECEIVER_NOT_EXPORTED
import android.content.IntentFilter
import android.os.Build
import android.os.Process
import android.webkit.WebView
import androidx.annotation.RequiresApi
import com.moengage.push.amp.plus.MiPushHelper
import com.navi.adverse.data.network.model.AdverseConfig
import com.navi.adverse.sdk.sdkManager.AdverseSdkManager
@@ -37,10 +34,8 @@ import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.DISABLE_A
import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.PULSE_EVENT_BATCH_SIZE
import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.PULSE_EVENT_INTERVAL_IN_SECS
import com.navi.common.managers.UserManager
import com.navi.common.receiver.AlfredNetworkFailureReceiver
import com.navi.common.utils.CommonUtils
import com.navi.common.utils.getSessionId
import com.navi.common.utils.registerReceiverWithVersionCheck
import com.navi.common.utils.updateSessionId
import com.navi.pay.common.setup.NaviPayManager
import com.navi.payment.razorpay.RazorpayHelper
@@ -145,7 +140,6 @@ object NaviSDKHelper {
setDeviceIdIfUserNotLoggedIn()
setSessionId(naviApplication)
if (!FirebaseRemoteConfigHelper.getBoolean(DISABLE_ALFRED)) {
registerAlfredNetworkReceiver(naviApplication)
AlfredManager.getAlfredCruiseInfo(cruiseApiSuccessful = {})
}
CommonUtils.getUserLocation()?.let { userLocation ->
@@ -208,16 +202,4 @@ object NaviSDKHelper {
} catch (e: Exception) {}
return null
}
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
private fun registerAlfredNetworkReceiver(naviApplication: NaviApplication) {
val appNetworkReceiver = AlfredNetworkFailureReceiver()
val intentFilter = IntentFilter(AlfredConstants.BROADCAST_ACTION_TYPE)
registerReceiverWithVersionCheck(
naviApplication,
appNetworkReceiver,
intentFilter,
RECEIVER_NOT_EXPORTED
)
}
}

View File

@@ -26,12 +26,12 @@ class SdkInitializer @Inject constructor() : ComponentInitializer {
NaviSDKHelper.init(naviApplication = application)
UiTronSdkManager.init(UiTronDependencyProvider(application.applicationContext))
initSdkDebugMode(application.applicationContext)
AlfredApiLogsManager.init(AlfredApiLogsProviderImpl())
}
private fun initSdkDebugMode(applicationContext: Context) {
if (BuildConfig.FLAVOR == QA && !BuildConfig.DEBUG) {
NetWatchManger.init(context = applicationContext, flavour = BuildConfig.FLAVOR)
AlfredApiLogsManager.init(AlfredApiLogsProviderImpl())
}
}
}

View File

@@ -97,7 +97,7 @@ moengage-push-amp-plus = "6.2.1"
moengage-rich-notification = "4.3.2"
mvel2 = "2.4.15.Final"
navi-adverse = "1.1.0-20240809.104922-1"
navi-alfred = "1.12.0-20240809.112358-2"
navi-alfred = "1.13.1"
navi-guarddog = "3.3.0-20240809.105101-1"
navi-pulse = "1.5.0-20240809.105001-6"
navi-uitron = "1.20.1-20240809.104806-3"

View File

@@ -57,13 +57,5 @@
<service android:name=".pushnotification.TimerNotificationService"
android:foregroundServiceType="specialUse" />
<receiver android:name=".receiver.AlfredNetworkFailureReceiver"
android:exported="true"
android:permission="com.navi.alfred.permission.SEND_BROADCAST">
<intent-filter>
<action android:name="com.navi.alfred.utils.AlfredConstants.BROADCAST_ACTION_TYPE" />
</intent-filter>
</receiver>
</application>
</manifest>

View File

@@ -1,6 +1,6 @@
/*
*
* * Copyright © 2022-2023 by Navi Technologies Limited
* * Copyright © 2022-2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
@@ -18,9 +18,13 @@ const val DEFAULT_LOCALE = "defaultLocale"
const val X_SESSION_TOKEN = "X-Session-Token"
const val X_CLICK_STREAM_DATA = "X-Click-Stream-Data"
const val X_TARGET = "X-Target"
const val APP_REQUEST_ID = "appRequestId"
const val FLOWER_BRACKETS = "{}"
const val NETWORK_CRASH = "network_crash"
const val MESSAGE_TEXT = "message"
const val CODE_TEXT = "code"
const val API_URL = "apiUrl"
const val VERTICAL = "vertical"
const val NETWORK_CONNECTION_ALIVE_TIME = 5L
const val NETWORK_CONNECTION_MAX_IDLE_TIME = 0

View File

@@ -1,55 +0,0 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.navi.common.receiver
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import com.navi.alfred.model.ErrorMessage
import com.navi.alfred.network.model.RequestInfo
import com.navi.alfred.utils.AlfredConstants.BROADCAST_ACTION_TYPE
import com.navi.alfred.utils.AlfredConstants.BROADCAST_ERROR_MESSAGE
import com.navi.alfred.utils.AlfredConstants.BROADCAST_EXCEPTION
import com.navi.alfred.utils.AlfredConstants.BROADCAST_REQUEST
import com.navi.alfred.utils.log
import com.navi.analytics.utils.NaviAnalyticsHelper
import com.navi.analytics.utils.NaviTrackEvent
import com.navi.common.constants.NETWORK_CRASH
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class AlfredNetworkFailureReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action == BROADCAST_ACTION_TYPE) {
try {
val exception = intent.getSerializableExtra(BROADCAST_EXCEPTION)
val request = intent.getParcelableExtra<RequestInfo>(BROADCAST_REQUEST)
val errorMessage = intent.getParcelableExtra<ErrorMessage>(BROADCAST_ERROR_MESSAGE)
if (exception is Exception) {
CoroutineScope(Dispatchers.IO).launch {
NaviAnalyticsHelper.recordException(exception)
NaviTrackEvent.trackEventOnClickStream(
NETWORK_CRASH,
mapOf(
Pair("message", exception.message.orEmpty()),
Pair("code", errorMessage?.statusCode.toString()),
Pair("apiUrl", request?.url.toString()),
Pair("vertical", request?.xTarget ?: ""),
Pair("appRequestId", request?.appRequestId ?: "")
)
)
}
}
} catch (e: Exception) {
e.log()
}
}
}
}