Limit chip updates

pull/3313/head
Alex Baker 10 months ago
parent c8d1d379a8
commit 5b5ba97bb2

@ -7,6 +7,7 @@ import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.compose.throttleLatest
import org.tasks.data.dao.CaldavDao import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.TagDataDao import org.tasks.data.dao.TagDataDao
import org.tasks.data.entity.CaldavAccount import org.tasks.data.entity.CaldavAccount
@ -45,6 +46,7 @@ class ChipListCache @Inject internal constructor(
} }
private fun updateTags(updated: List<TagData>) { private fun updateTags(updated: List<TagData>) {
Timber.d("Updating tags")
tagDatas.clear() tagDatas.clear()
for (update in updated) { for (update in updated) {
tagDatas[update.remoteId] = TagFilter(update) tagDatas[update.remoteId] = TagFilter(update)
@ -57,12 +59,16 @@ class ChipListCache @Inject internal constructor(
fun getTag(tag: String?): TagFilter? = tagDatas[tag] fun getTag(tag: String?): TagFilter? = tagDatas[tag]
init { init {
caldavDao combine(caldavDao.watchAccounts(), caldavDao.subscribeToCalendars()) { accounts, calendars ->
.watchAccounts() accounts to calendars
.combine(caldavDao.subscribeToCalendars()) { accounts, calendars -> }
updateCaldavCalendars(accounts, calendars) .throttleLatest(1000)
} .onEach { (accounts, calendars) -> updateCaldavCalendars(accounts, calendars) }
.launchIn(scope)
tagDataDao
.subscribeToTags()
.throttleLatest(1000)
.onEach { updateTags(it) }
.launchIn(scope) .launchIn(scope)
tagDataDao.subscribeToTags().onEach { updateTags(it) }.launchIn(scope)
} }
} }
Loading…
Cancel
Save