@@ -2,6 +2,7 @@ package org.wordpress.android.ui.subscribers
2
2
3
3
import dagger.hilt.android.lifecycle.HiltViewModel
4
4
import kotlinx.coroutines.CoroutineDispatcher
5
+ import kotlinx.coroutines.Job
5
6
import kotlinx.coroutines.flow.MutableStateFlow
6
7
import kotlinx.coroutines.flow.asStateFlow
7
8
import kotlinx.coroutines.withContext
@@ -38,6 +39,8 @@ class SubscribersViewModel @Inject constructor(
38
39
private val _subscriberStats = MutableStateFlow <IndividualSubscriberStats ?>(null )
39
40
val subscriberStats = _subscriberStats .asStateFlow()
40
41
42
+ private var statsJob: Job ? = null
43
+
41
44
@Inject
42
45
lateinit var dateFormatWrapper: SimpleDateFormatWrapper
43
46
@@ -186,7 +189,7 @@ class SubscribersViewModel @Inject constructor(
186
189
return item?.data as ? Subscriber
187
190
}
188
191
189
- suspend fun fetchSubscriberStats (subscriptionId : ULong ): IndividualSubscriberStats ? {
192
+ private suspend fun fetchSubscriberStats (subscriptionId : ULong ): IndividualSubscriberStats ? {
190
193
val params = IndividualSubscriberStatsParams (
191
194
subscriptionId = subscriptionId
192
195
)
@@ -212,13 +215,14 @@ class SubscribersViewModel @Inject constructor(
212
215
}
213
216
214
217
/* *
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.
216
219
*/
217
220
override fun onItemClick (item : DataViewItem ) {
218
221
(item.data as ? Subscriber )?.let { subscriber ->
219
222
appLogWrapper.d(AppLog .T .MAIN , " Clicked on subscriber ${subscriber.displayNameOrEmail()} " )
220
223
_subscriberStats .value = null
221
- launch {
224
+ statsJob?.cancel()
225
+ statsJob = launch {
222
226
val stats = fetchSubscriberStats(subscriber.subscriptionId)
223
227
_subscriberStats .value = stats
224
228
}
0 commit comments