NTP-45559 | BandwidthBuddy Integration (#15318)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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" }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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(),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user