Skip to content
Snippets Groups Projects
Commit 2eb4a3f3 authored by Evan Laird's avatar Evan Laird Committed by Android Build Coastguard Worker
Browse files

[Mobile] Don't return StateFlow from method

MobileConnectionsRepositoryImpl#subscriptionModelForSubId was creating a
StateFlow for each subscription that it returned. This is an incorrect
usage since that `stateIn` call starts a new job to collect from the
underlying flow, and it is never canceled until the scope is canceled.
The scope being used is the @Application scope, so it's effectively
never canceled.

It seems that this was not a load bearing StateFlow, so this CL just
removes the `stateIn` call to fix that issue.

Test: tests in statusbar/pipeline/mobile
Bug: 317205264
Flag: NONE
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:f9027a5955112c1162be3da5bff66d6fefcae3f2)
Merged-In: I82ddc7576e2b8d45574be6f0c3f0176da9457bb9
Change-Id: I82ddc7576e2b8d45574be6f0c3f0176da9457bb9
parent 196d365b
No related branches found
No related tags found
No related merge requests found
......@@ -27,6 +27,7 @@ import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConn
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
......@@ -48,7 +49,7 @@ class FullMobileConnectionRepository(
override val subId: Int,
startingIsCarrierMerged: Boolean,
override val tableLogBuffer: TableLogBuffer,
subscriptionModel: StateFlow<SubscriptionModel?>,
subscriptionModel: Flow<SubscriptionModel?>,
private val defaultNetworkName: NetworkNameModel,
private val networkNameSeparator: String,
@Application scope: CoroutineScope,
......@@ -331,7 +332,7 @@ class FullMobileConnectionRepository(
fun build(
subId: Int,
startingIsCarrierMerged: Boolean,
subscriptionModel: StateFlow<SubscriptionModel?>,
subscriptionModel: Flow<SubscriptionModel?>,
defaultNetworkName: NetworkNameModel,
networkNameSeparator: String,
): FullMobileConnectionRepository {
......
......@@ -96,7 +96,7 @@ import kotlinx.coroutines.withContext
class MobileConnectionRepositoryImpl(
override val subId: Int,
private val context: Context,
subscriptionModel: StateFlow<SubscriptionModel?>,
subscriptionModel: Flow<SubscriptionModel?>,
defaultNetworkName: NetworkNameModel,
networkNameSeparator: String,
connectivityManager: ConnectivityManager,
......@@ -448,7 +448,7 @@ class MobileConnectionRepositoryImpl(
fun build(
subId: Int,
mobileLogger: TableLogBuffer,
subscriptionModel: StateFlow<SubscriptionModel?>,
subscriptionModel: Flow<SubscriptionModel?>,
defaultNetworkName: NetworkNameModel,
networkNameSeparator: String,
): MobileConnectionRepository {
......
......@@ -357,10 +357,10 @@ constructor(
@VisibleForTesting fun getSubIdRepoCache() = subIdRepositoryCache
private fun subscriptionModelForSubId(subId: Int): StateFlow<SubscriptionModel?> {
return subscriptions
.map { list -> list.firstOrNull { model -> model.subscriptionId == subId } }
.stateIn(scope, SharingStarted.WhileSubscribed(), null)
private fun subscriptionModelForSubId(subId: Int): Flow<SubscriptionModel?> {
return subscriptions.map { list ->
list.firstOrNull { model -> model.subscriptionId == subId }
}
}
private fun createRepositoryForSubId(subId: Int): FullMobileConnectionRepository {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment