From 611dcb79116a2bb7893e966068dd011f8dc3975a Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Wed, 20 Mar 2024 15:53:39 +0100 Subject: [PATCH] fix error handling for shared items. Before this with http 406 it threw a NPE and UI was shown as loading state. With this commit an empty list is returned when there is a http error. http 406 happens for federated rooms for now. So it might be that Shared items screen will be hidden by additional commits. Signed-off-by: Marcel Hibbe --- .../repositories/SharedItemsRepositoryImpl.kt | 20 ++++++++++++------- .../viewmodels/SharedItemsViewModel.kt | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/shareditems/repositories/SharedItemsRepositoryImpl.kt b/app/src/main/java/com/nextcloud/talk/shareditems/repositories/SharedItemsRepositoryImpl.kt index ea3d5f6df..81641e7f4 100644 --- a/app/src/main/java/com/nextcloud/talk/shareditems/repositories/SharedItemsRepositoryImpl.kt +++ b/app/src/main/java/com/nextcloud/talk/shareditems/repositories/SharedItemsRepositoryImpl.kt @@ -188,15 +188,20 @@ class SharedItemsRepositoryImpl @Inject constructor(private val ncApi: NcApi, pr 1 ).map { val types = mutableSetOf() - val typeMap = it.body()!!.ocs!!.data!! - for (t in typeMap) { - if (t.value.isNotEmpty()) { - try { - types += SharedItemType.typeFor(t.key) - } catch (e: IllegalArgumentException) { - Log.w(TAG, "Server responds an unknown shared item type: ${t.key}") + + if (it.code() == HTTP_OK) { + val typeMap = it.body()!!.ocs!!.data!! + for (t in typeMap) { + if (t.value.isNotEmpty()) { + try { + types += SharedItemType.typeFor(t.key) + } catch (e: IllegalArgumentException) { + Log.w(TAG, "Server responds an unknown shared item type: ${t.key}") + } } } + } else { + Log.e(TAG, "Failed to getSharedItemsOverview") } types.toSet() @@ -213,6 +218,7 @@ class SharedItemsRepositoryImpl @Inject constructor(private val ncApi: NcApi, pr companion object { const val BATCH_SIZE: Int = 28 + private const val HTTP_OK: Int = 200 private val TAG = SharedItemsRepositoryImpl::class.simpleName } } diff --git a/app/src/main/java/com/nextcloud/talk/shareditems/viewmodels/SharedItemsViewModel.kt b/app/src/main/java/com/nextcloud/talk/shareditems/viewmodels/SharedItemsViewModel.kt index 96dbf5b00..f964da317 100644 --- a/app/src/main/java/com/nextcloud/talk/shareditems/viewmodels/SharedItemsViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/shareditems/viewmodels/SharedItemsViewModel.kt @@ -81,7 +81,7 @@ class SharedItemsViewModel @Inject constructor( } override fun onError(e: Throwable) { - Log.d(TAG, "An error occurred: $e") + Log.e(TAG, "An error occurred when loading available types", e) } override fun onComplete() {