Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8edb018 authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Create phoneNumberFlow

Bug: 318310357
Test: manual - on Mobile Settings
Change-Id: Ib80b6c510ebd89650557240add23d914934ba6c9
parent 7eb6df8e
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -17,8 +17,10 @@
package com.android.settings.network.telephony

import android.content.Context
import android.telephony.SubscriptionInfo
import android.telephony.SubscriptionManager
import android.util.Log
import com.android.settings.network.SubscriptionUtil
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.asExecutor
import kotlinx.coroutines.channels.awaitClose
@@ -36,6 +38,10 @@ fun Context.isSubscriptionEnabledFlow(subId: Int) = subscriptionsChangedFlow().m
    subscriptionManager?.isSubscriptionEnabled(subId) ?: false
}.flowOn(Dispatchers.Default)

fun Context.phoneNumberFlow(subscriptionInfo: SubscriptionInfo) = subscriptionsChangedFlow().map {
    SubscriptionUtil.getFormattedPhoneNumber(this, subscriptionInfo)
}.flowOn(Dispatchers.Default)

fun Context.subscriptionsChangedFlow() = callbackFlow {
    val subscriptionManager = getSystemService(SubscriptionManager::class.java)!!

+5 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import com.android.settings.R
import com.android.settings.network.SubscriptionUtil
import com.android.settings.network.telephony.MobileNetworkUtils
import com.android.settings.network.telephony.isSubscriptionEnabledFlow
import com.android.settings.network.telephony.phoneNumberFlow
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
import com.android.settingslib.spa.widget.preference.TwoTargetSwitchPreference
@@ -57,11 +58,14 @@ private fun SimPreference(subInfo: SubscriptionInfo) {
    val checked = remember(subInfo.subscriptionId) {
        context.isSubscriptionEnabledFlow(subInfo.subscriptionId)
    }.collectAsStateWithLifecycle(initialValue = false)
    val phoneNumber = remember(subInfo) {
        context.phoneNumberFlow(subInfo)
    }.collectAsStateWithLifecycle(initialValue = null)
    //TODO: Add the Restricted TwoTargetSwitchPreference in SPA
    TwoTargetSwitchPreference(
        object : SwitchPreferenceModel {
            override val title = subInfo.displayName.toString()
            override val summary = { subInfo.number }
            override val summary = { phoneNumber.value ?: "" }
            override val checked = { checked.value }
            override val onCheckedChange = { newChecked: Boolean ->
                SubscriptionUtil.startToggleSubscriptionDialogActivity(