Skip to content

Commit 859fc07

Browse files
committed
Use a cancellable job for stats
1 parent f7a2ef0 commit 859fc07

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

WordPress/src/main/java/org/wordpress/android/ui/subscribers/SubscribersViewModel.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.wordpress.android.ui.subscribers
22

33
import dagger.hilt.android.lifecycle.HiltViewModel
44
import kotlinx.coroutines.CoroutineDispatcher
5+
import kotlinx.coroutines.Job
56
import kotlinx.coroutines.flow.MutableStateFlow
67
import kotlinx.coroutines.flow.asStateFlow
78
import kotlinx.coroutines.withContext
@@ -38,6 +39,8 @@ class SubscribersViewModel @Inject constructor(
3839
private val _subscriberStats = MutableStateFlow<IndividualSubscriberStats?>(null)
3940
val subscriberStats = _subscriberStats.asStateFlow()
4041

42+
private var statsJob: Job? = null
43+
4144
@Inject
4245
lateinit var dateFormatWrapper: SimpleDateFormatWrapper
4346

@@ -186,7 +189,7 @@ class SubscribersViewModel @Inject constructor(
186189
return item?.data as? Subscriber
187190
}
188191

189-
suspend fun fetchSubscriberStats(subscriptionId: ULong): IndividualSubscriberStats? {
192+
private suspend fun fetchSubscriberStats(subscriptionId: ULong): IndividualSubscriberStats? {
190193
val params = IndividualSubscriberStatsParams(
191194
subscriptionId = subscriptionId
192195
)
@@ -212,13 +215,14 @@ class SubscribersViewModel @Inject constructor(
212215
}
213216

214217
/**
215-
* Called when an item in the list is clicked.
218+
* Called when an item in the list is clicked. We use this to request stats for the clicked subscriber.
216219
*/
217220
override fun onItemClick(item: DataViewItem) {
218221
(item.data as? Subscriber)?.let { subscriber ->
219222
appLogWrapper.d(AppLog.T.MAIN, "Clicked on subscriber ${subscriber.displayNameOrEmail()}")
220223
_subscriberStats.value = null
221-
launch {
224+
statsJob?.cancel()
225+
statsJob = launch {
222226
val stats = fetchSubscriberStats(subscriber.subscriptionId)
223227
_subscriberStats.value = stats
224228
}

0 commit comments

Comments
 (0)