From d654b1b0bde44e6733a25a4aad5689e7bab2bc07 Mon Sep 17 00:00:00 2001 From: davidoskky Date: Thu, 18 Aug 2022 14:45:10 +0200 Subject: [PATCH] Refactor connectivity check --- .../repository/RepositoryImpl.kt | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) 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 78b49de..ff83fac 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 @@ -63,7 +63,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails suspend fun getNewerItems(): ArrayList { // TODO: Use the updatedSince parameter - if (isConnectionAvailable.value && !offlineOverride) { + if (isNetworkAvailable()) { val fetchedItems = api.getItems( displayedItems.type, settings.getString("prefer_api_items_number", "200").toInt(), @@ -84,7 +84,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails } suspend fun getOlderItems(): ArrayList { - if (isConnectionAvailable.value && !offlineOverride) { + if (isNetworkAvailable()) { val offset = items.size val fetchedItems = api.getItems( displayedItems.type, @@ -106,7 +106,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails } suspend fun allItems(itemType: ItemType): List? { - return if (isConnectionAvailable.value && !offlineOverride) { + return if (isNetworkAvailable()) { api.getItems( itemType.type, 200, @@ -137,7 +137,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails suspend fun reloadBadges(): Boolean { var success = false - if (isConnectionAvailable.value && !offlineOverride) { + if (isNetworkAvailable()) { val response = api.stats() if (response != null) { badgeUnread = response.unread @@ -153,7 +153,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails suspend fun getTags(): List? { // TODO: Store in DB - return if (isConnectionAvailable.value && !offlineOverride) { + return if (isNetworkAvailable()) { api.tags() } else { // TODO: Compute from database @@ -163,7 +163,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails suspend fun getSpouts(): Map? { // TODO: Store in DB - return if (isConnectionAvailable.value && !offlineOverride) { + return if (isNetworkAvailable()) { api.spouts() } else { // TODO: Compute from database @@ -173,7 +173,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails suspend fun getSources(): ArrayList? { // TODO: Store in DB - return if (isConnectionAvailable.value && !offlineOverride) { + return if (isNetworkAvailable()) { api.sources() } else { // TODO: Compute from database @@ -192,7 +192,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails suspend fun markAsReadById(id: Int): Boolean { var success = false - if (isConnectionAvailable.value && !offlineOverride) { + if (isNetworkAvailable()) { success = api.markAsRead(id.toString())?.isSuccess == true } return success @@ -209,7 +209,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails suspend fun unmarkAsReadById(id: Int): Boolean { var success = false - if (isConnectionAvailable.value && !offlineOverride) { + if (isNetworkAvailable()) { success = api.unmarkAsRead(id.toString())?.isSuccess == true } return success @@ -226,7 +226,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails suspend fun starrById(id: Int): Boolean { var success = false - if (isConnectionAvailable.value && !offlineOverride) { + if (isNetworkAvailable()) { success = api.starr(id.toString())?.isSuccess == true } return success @@ -243,7 +243,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails suspend fun unstarrById(id: Int): Boolean { var success = false - if (isConnectionAvailable.value && !offlineOverride) { + if (isNetworkAvailable()) { success = api.unstarr(id.toString())?.isSuccess == true } return success @@ -252,7 +252,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails suspend fun markAllAsRead(items: ArrayList): Boolean { var success = false - if (isConnectionAvailable.value && !offlineOverride) { + if (isNetworkAvailable()) { success = api.markAllAsRead(items.map { it.id.toString() })?.isSuccess == true } @@ -304,7 +304,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails filter: String ): Boolean { var response = false - if (isConnectionAvailable.value && !offlineOverride) { + if (isNetworkAvailable()) { response = api.createSourceForVersion( title, url, @@ -321,7 +321,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails suspend fun deleteSource(id: Int): Boolean { // TODO: Store in DB var success = false - if (isConnectionAvailable.value && !offlineOverride) { + if (isNetworkAvailable()) { val response = api.deleteSource(id) if (response != null) { success = response.isSuccess @@ -342,7 +342,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails suspend fun login(): Boolean { var result = false - if (isConnectionAvailable.value && !offlineOverride) { + if (isNetworkAvailable()) { try { val response = api.login() result = response?.isSuccess == true @@ -369,7 +369,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails private suspend fun updateApiVersion() { apiMajorVersion = settings.getInt("apiVersionMajor", 0) - if (isConnectionAvailable.value && !offlineOverride) { + if (isNetworkAvailable()) { val fetchedVersion = api.version() if (fetchedVersion != null) { apiMajorVersion = fetchedVersion.getApiMajorVersion() @@ -378,5 +378,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails } } + private fun isNetworkAvailable() = isConnectionAvailable.value && !offlineOverride + // TODO: Handle offline actions } \ No newline at end of file