Эх сурвалжийг харах

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 <dev@mhibbe.de>
Marcel Hibbe 1 жил өмнө
parent
commit
611dcb7911

+ 13 - 7
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<SharedItemType>()
-            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
     }
 }

+ 1 - 1
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() {