NTP-45559 | BandwidthBuddy Integration (#15318)

This commit is contained in:
shreyansu raj
2025-03-26 15:27:38 +05:30
committed by GitHub
parent 84ecf002dd
commit fee48d24e1
5 changed files with 67 additions and 1 deletions

View File

@@ -1,6 +1,6 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * Copyright © 2024-2025 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
@@ -10,6 +10,7 @@ package com.naviapp.app.initializers
import android.content.Context
import com.navi.alfred.network.AlfredApiLogsManager
import com.navi.analytics.utils.NaviTrackEvent
import com.navi.base.bandwidthbuddy.BandwidthAccessor
import com.navi.base.sharedpref.PreferenceManager
import com.navi.base.utils.NetWatchManger
import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper
@@ -35,6 +36,7 @@ class SdkInitializer @Inject constructor() : ComponentInitializer {
UiTronSdkManager.init(UiTronDependencyProvider(application.applicationContext))
initSdkDebugMode(application.applicationContext)
AlfredApiLogsManager.init(AlfredApiLogsProviderImpl())
BandwidthAccessor.init()
// This will be removed in next release
TemporaryStorageHelper.isOkHttpCustomDnsV2Enabled =
FirebaseRemoteConfigHelper.getBoolean(OKHTTP_CUSTOM_DNS_EXPERIMENT_V2)

View File

@@ -99,6 +99,7 @@ navi-guarddog = "3.14.0"
navi-pulse = "1.15.0"
navi-traceflow = "1.0.0"
navi-uitron = "3.5.0"
navi-bandwidthBuddy = "1.0.0"
navigation = "2.8.5"
okhttp-bom = "4.12.0"
payu-checkoutPro = "2.4.3"
@@ -342,6 +343,7 @@ mvel2 = { module = "org.mvel:mvel2", version.ref = "mvel2" }
navi-adverse = { module = "com.navi.android:adverse", version.ref = "navi-adverse" }
navi-alfred = { module = "com.navi.android:alfred", version.ref = "navi-alfred" }
navi-bandwidthBuddy = { module = "com.navi.android:bandwidthbuddy", version.ref = "navi-bandwidthBuddy" }
navi-customerDocumentCollector = { module = "com.navi.android:customer-document-collector", version.ref = "navi-customerDocumentCollector" }
navi-elex = { module = "com.navi.android:elex", version.ref = "navi-elex" }
navi-guarddog = { module = "com.navi.android:guarddog", version.ref = "navi-guarddog" }

View File

@@ -75,6 +75,7 @@ dependencies {
api libs.android.play.featureDeliveryKtx
api libs.android.play.reviewKtx
api libs.androidx.hilt.navigation.compose
api libs.navi.bandwidthBuddy
api libs.firebase.analytics
api libs.firebase.crashlytics
api libs.firebase.firestore

View File

@@ -0,0 +1,54 @@
/*
*
* * Copyright © 2025 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.navi.base.bandwidthbuddy
import com.google.firebase.crashlytics.FirebaseCrashlytics
import com.navi.bandwidthbuddy.BandwidthBuddyManager
import com.navi.bandwidthbuddy.BandwidthQuality
import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
object BandwidthAccessor {
private lateinit var bandwidthBuddyManager: BandwidthBuddyManager
var networkSpeed: Double? = null
private set
var networkQuality: BandwidthQuality? = null
private set
private val exceptionHandler = CoroutineExceptionHandler { _, exception ->
FirebaseCrashlytics.getInstance().recordException(exception)
}
fun init() {
bandwidthBuddyManager = BandwidthBuddyManager()
fetchBandwidthData()
}
@OptIn(DelicateCoroutinesApi::class)
private fun fetchBandwidthData() {
GlobalScope.launch(Dispatchers.IO + exceptionHandler) {
combine(
bandwidthBuddyManager.getBandwidthSpeed(),
bandwidthBuddyManager.getBandwidthQuality(),
) { bandwidthSpeed, bandwidthQuality ->
networkSpeed = bandwidthSpeed
networkQuality = bandwidthQuality
}
.flowOn(Dispatchers.IO)
.stateIn(scope = this, started = SharingStarted.Eagerly, initialValue = null)
}
}
}

View File

@@ -10,6 +10,7 @@ package com.navi.common.checkmate.core
import com.navi.alfred.AlfredManager
import com.navi.analytics.utils.NaviTrackEvent
import com.navi.base.AppServiceManager
import com.navi.base.bandwidthbuddy.BandwidthAccessor
import com.navi.base.utils.orZero
import com.navi.common.checkmate.model.EventType
import com.navi.common.checkmate.model.MetricInfo
@@ -94,6 +95,8 @@ object CheckMateManager {
"isNae" to
getIsNae(isNae = isNae, statusCode = statusCode, exception = exception)
.toString(),
"bandwidthBuddySpeed" to BandwidthAccessor.networkSpeed.toString(),
"bandwidthBuddyQuality" to BandwidthAccessor.networkQuality?.name.toString(),
),
)
}
@@ -137,6 +140,8 @@ object CheckMateManager {
"vendor" to vendor.orEmpty(),
"exception" to exception.toString(),
"alfredSessionId" to AlfredManager.getAlfredSessionId(),
"bandwidthBuddySpeed" to BandwidthAccessor.networkSpeed.toString(),
"bandwidthBuddyQuality" to BandwidthAccessor.networkQuality?.name.toString(),
),
)
}
@@ -162,6 +167,8 @@ object CheckMateManager {
"uIRenderLatency" to uIRenderLatency.toString(),
"screenE2ELatency" to screenE2ELatency.toString(),
"alfredSessionId" to AlfredManager.getAlfredSessionId(),
"bandwidthBuddySpeed" to BandwidthAccessor.networkSpeed.toString(),
"bandwidthBuddyQuality" to BandwidthAccessor.networkQuality?.name.toString(),
),
)
}