Reduce api calls when getDataSummary

When defaultSubId == activeSubId, return display name directly.

Bug: 339884322
Flag: com.android.settings.flags.internet_preference_controller_v2
Test: manual - on Internet
Change-Id: I8422c709483069a6894b99d5cc2cc652459ab5e0
This commit is contained in:
Chaohui Wang
2024-06-17 14:00:03 +08:00
parent 2f71bc764d
commit dc02b5ea59

View File

@@ -51,46 +51,41 @@ class DataSubscriptionRepository(
) )
.map { it.getIntExtra(SUBSCRIPTION_KEY, SubscriptionManager.INVALID_SUBSCRIPTION_ID) } .map { it.getIntExtra(SUBSCRIPTION_KEY, SubscriptionManager.INVALID_SUBSCRIPTION_ID) }
.onStart { emit(SubscriptionManager.getDefaultDataSubscriptionId()) } .onStart { emit(SubscriptionManager.getDefaultDataSubscriptionId()) }
.distinctUntilChanged()
.conflate() .conflate()
.flowOn(Dispatchers.Default) .flowOn(Dispatchers.Default)
fun activeDataSubscriptionIdFlow(): Flow<Int> = fun activeDataSubscriptionIdFlow(): Flow<Int> =
telephonyManager.telephonyCallbackFlow { telephonyManager
object : TelephonyCallback(), TelephonyCallback.ActiveDataSubscriptionIdListener { .telephonyCallbackFlow {
override fun onActiveDataSubscriptionIdChanged(subId: Int) { object : TelephonyCallback(), TelephonyCallback.ActiveDataSubscriptionIdListener {
trySend(subId) override fun onActiveDataSubscriptionIdChanged(subId: Int) {
Log.d(TAG, "activeDataSubscriptionIdFlow: $subId") trySend(subId)
Log.d(TAG, "activeDataSubscriptionIdFlow: $subId")
}
} }
} }
} .distinctUntilChanged()
fun dataSummaryFlow(): Flow<String> = fun dataSummaryFlow(): Flow<String> =
combine(defaultDataSubscriptionIdFlow(), activeDataSubscriptionIdFlow()) { combine(defaultDataSubscriptionIdFlow(), activeDataSubscriptionIdFlow()) {
defaultSubId, defaultDataSubId,
activeSubId -> activeDataSubId ->
DataSubscriptionIds(defaultSubId, activeSubId) getDataSummary(defaultDataSubId, activeDataSubId)
} }
.distinctUntilChanged()
.map { it.getDataSummary() }
.conflate() .conflate()
.flowOn(Dispatchers.Default) .flowOn(Dispatchers.Default)
private data class DataSubscriptionIds( private fun getDataSummary(defaultDataSubId: Int, activeDataSubId: Int): String {
val defaultSubId: Int, if (defaultDataSubId == activeDataSubId) return getDisplayName(defaultDataSubId)
val activeSubId: Int, val activeSubInfo =
) subscriptionManager.getActiveSubscriptionInfo(activeDataSubId)
?: return getDisplayName(defaultDataSubId)
private fun DataSubscriptionIds.getDataSummary(): String {
val activeSubInfo = subscriptionManager.getActiveSubscriptionInfo(activeSubId) ?: return ""
if (!SubscriptionUtil.isSubscriptionVisible(subscriptionManager, context, activeSubInfo)) { if (!SubscriptionUtil.isSubscriptionVisible(subscriptionManager, context, activeSubInfo)) {
return getDisplayName(defaultSubId) return getDisplayName(defaultDataSubId)
}
val uniqueName = getDisplayName(activeSubId)
return if (activeSubId == defaultSubId) {
uniqueName
} else {
context.getString(R.string.mobile_data_temp_using, uniqueName)
} }
// non-DDS is active
return context.getString(R.string.mobile_data_temp_using, getDisplayName(activeDataSubId))
} }
companion object { companion object {