diff --git a/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryImpl.kt b/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryImpl.kt index bfca07a..e7b65e5 100644 --- a/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryImpl.kt +++ b/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryImpl.kt @@ -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 CoroutineScope(Dispatchers.Main).launch { 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 success = true } - } else { + } else if (itemsCaching) { // TODO: do this differently, because it's not efficient val dbItems = getDBItems() _badgeUnread.value = dbItems.filter { item -> item.unread }.size _badgeStarred.value = dbItems.filter { item -> item.starred }.size - _badgeAll.value = items.size + _badgeAll.value = dbItems.size } return success } @@ -437,13 +442,16 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails suspend fun tryToCacheItemsAndGetNewOnes(): List? { - try { - val newItems = getMaxItemsForBackground(ItemType.UNREAD) - val allItems = getMaxItemsForBackground(ItemType.ALL) - val starredItems = getMaxItemsForBackground(ItemType.STARRED) - insertDBItems(newItems.orEmpty() + allItems.orEmpty() + starredItems.orEmpty()) - return newItems - } catch (e: Throwable) {} + if (itemsCaching) { + try { + val newItems = getMaxItemsForBackground(ItemType.UNREAD) + val allItems = getMaxItemsForBackground(ItemType.ALL) + val starredItems = getMaxItemsForBackground(ItemType.STARRED) + insertDBItems(newItems.orEmpty() + allItems.orEmpty() + starredItems.orEmpty()) + return newItems + } catch (e: Throwable) { + } + } return emptyList() }