Merge "Filter out empty phone number" into main

This commit is contained in:
Chaohui Wang
2024-03-15 03:08:16 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 1 deletions

View File

@@ -26,6 +26,7 @@ import kotlinx.coroutines.asExecutor
import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.conflate import kotlinx.coroutines.flow.conflate
import kotlinx.coroutines.flow.filterNot
import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
@@ -55,7 +56,7 @@ fun Context.isSubscriptionEnabledFlow(subId: Int) = subscriptionsChangedFlow().m
fun Context.phoneNumberFlow(subscriptionInfo: SubscriptionInfo) = subscriptionsChangedFlow().map { fun Context.phoneNumberFlow(subscriptionInfo: SubscriptionInfo) = subscriptionsChangedFlow().map {
SubscriptionUtil.getFormattedPhoneNumber(this, subscriptionInfo) SubscriptionUtil.getFormattedPhoneNumber(this, subscriptionInfo)
}.flowOn(Dispatchers.Default) }.filterNot { it.isNullOrEmpty() }.flowOn(Dispatchers.Default)
fun Context.subscriptionsChangedFlow() = callbackFlow { fun Context.subscriptionsChangedFlow() = callbackFlow {
val subscriptionManager = requireSubscriptionManager() val subscriptionManager = requireSubscriptionManager()

View File

@@ -141,10 +141,27 @@ class SubscriptionRepositoryTest {
assertThat(subInfos.map { it.subscriptionId }).containsExactly(SUB_ID_1) assertThat(subInfos.map { it.subscriptionId }).containsExactly(SUB_ID_1)
} }
@Test
fun phoneNumberFlow() = runBlocking {
mockSubscriptionManager.stub {
on { getPhoneNumber(SUB_ID_1) } doReturn NUMBER_1
}
val subInfo = SubscriptionInfo.Builder().apply {
setId(SUB_ID_1)
setMcc(MCC)
}.build()
val phoneNumber = context.phoneNumberFlow(subInfo).firstWithTimeoutOrNull()
assertThat(phoneNumber).isEqualTo(NUMBER_1)
}
private companion object { private companion object {
const val SUB_ID_1 = 1 const val SUB_ID_1 = 1
const val SUB_ID_2 = 2 const val SUB_ID_2 = 2
val GROUP_UUID = UUID.randomUUID().toString() val GROUP_UUID = UUID.randomUUID().toString()
const val SIM_SLOT_INDEX = 1 const val SIM_SLOT_INDEX = 1
const val NUMBER_1 = "000000001"
const val MCC = "310"
} }
} }