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

@ -45,10 +45,15 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
init { init {
// 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()
isConnectionAvailable.collect { connectionAvailable ->
if (connectionAvailable) {
updateApiVersion() updateApiVersion()
reloadBadges() reloadBadges()
} }
} }
}
}
suspend fun getNewerItems(): ArrayList<SelfossModel.Item> { suspend fun getNewerItems(): ArrayList<SelfossModel.Item> {
// TODO: Use the updatedSince parameter // TODO: Use the updatedSince parameter
@ -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>? {
if (itemsCaching) {
try { try {
val newItems = getMaxItemsForBackground(ItemType.UNREAD) val newItems = getMaxItemsForBackground(ItemType.UNREAD)
val allItems = getMaxItemsForBackground(ItemType.ALL) val allItems = getMaxItemsForBackground(ItemType.ALL)
val starredItems = getMaxItemsForBackground(ItemType.STARRED) val starredItems = getMaxItemsForBackground(ItemType.STARRED)
insertDBItems(newItems.orEmpty() + allItems.orEmpty() + starredItems.orEmpty()) insertDBItems(newItems.orEmpty() + allItems.orEmpty() + starredItems.orEmpty())
return newItems return newItems
} catch (e: Throwable) {} } catch (e: Throwable) {
}
}
return emptyList() return emptyList()
} }