Fetch badges and version on network available.

This commit is contained in:
davidoskky 2022-08-25 12:38:31 +02:00
parent 4857a3d0ac
commit 8c817b5938

View File

@ -46,7 +46,12 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
// TODO: Dispatchers.IO not available in KMM, an alternative solution should be found // TODO: Dispatchers.IO not available in KMM, an alternative solution should be found
CoroutineScope(Dispatchers.Main).launch { CoroutineScope(Dispatchers.Main).launch {
updateApiVersion() updateApiVersion()
reloadBadges() isConnectionAvailable.collect { connectionAvailable ->
if (connectionAvailable) {
updateApiVersion()
reloadBadges()
}
}
} }
} }
@ -132,12 +137,12 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
_badgeStarred.value = response.starred _badgeStarred.value = response.starred
success = true success = true
} }
} else { } else if (itemsCaching) {
// TODO: do this differently, because it's not efficient // TODO: do this differently, because it's not efficient
val dbItems = getDBItems() val dbItems = getDBItems()
_badgeUnread.value = dbItems.filter { item -> item.unread }.size _badgeUnread.value = dbItems.filter { item -> item.unread }.size
_badgeStarred.value = dbItems.filter { item -> item.starred }.size _badgeStarred.value = dbItems.filter { item -> item.starred }.size
_badgeAll.value = items.size _badgeAll.value = dbItems.size
} }
return success return success
} }
@ -437,13 +442,16 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
suspend fun tryToCacheItemsAndGetNewOnes(): List<SelfossModel.Item>? { suspend fun tryToCacheItemsAndGetNewOnes(): List<SelfossModel.Item>? {
try { if (itemsCaching) {
val newItems = getMaxItemsForBackground(ItemType.UNREAD) try {
val allItems = getMaxItemsForBackground(ItemType.ALL) val newItems = getMaxItemsForBackground(ItemType.UNREAD)
val starredItems = getMaxItemsForBackground(ItemType.STARRED) val allItems = getMaxItemsForBackground(ItemType.ALL)
insertDBItems(newItems.orEmpty() + allItems.orEmpty() + starredItems.orEmpty()) val starredItems = getMaxItemsForBackground(ItemType.STARRED)
return newItems insertDBItems(newItems.orEmpty() + allItems.orEmpty() + starredItems.orEmpty())
} catch (e: Throwable) {} return newItems
} catch (e: Throwable) {
}
}
return emptyList() return emptyList()
} }