From ed71a4a26b1f2231b4ff14435a305018db504e2a Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Fri, 5 Jan 2024 13:37:39 +0200
Subject: [PATCH] Hide media usage info for servers if usage call fails

---
 .../futo/circles/feature/settings/SettingsFragment.kt    | 6 +++---
 .../futo/circles/feature/settings/SettingsViewModel.kt   | 9 ++++-----
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt b/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt
index 0956f183b..6ea09e417 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt
+++ b/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt
@@ -109,9 +109,9 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
         viewModel.passPhraseLoadingLiveData.observeData(this) {
             loadingDialog.handleLoading(it)
         }
-        viewModel.mediaUsageInfoLiveData.observeData(this) { mediaUsage ->
-            bindMediaUsageProgress(mediaUsage)
-        }
+        viewModel.mediaUsageInfoLiveData.observeResponse(this,
+            error = { bindMediaUsageProgress(null) },
+            success = { bindMediaUsageProgress(it) })
     }
 
     private fun bindMediaUsageProgress(mediaUsage: MediaUsageInfo?) {
diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt b/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt
index 318be6f70..9a7ffeb2a 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt
+++ b/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt
@@ -1,16 +1,15 @@
 package org.futo.circles.feature.settings
 
-import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
 import org.futo.circles.auth.feature.log_in.log_out.LogoutDataSource
 import org.futo.circles.auth.feature.token.RefreshTokenManager
 import org.futo.circles.core.base.SingleEventLiveData
 import org.futo.circles.core.extensions.Response
+import org.futo.circles.core.extensions.createResult
 import org.futo.circles.core.extensions.launchBg
 import org.futo.circles.core.feature.workspace.SharedCircleDataSource
 import org.futo.circles.core.provider.MatrixSessionProvider
-import org.matrix.android.sdk.api.extensions.tryOrNull
 import org.matrix.android.sdk.internal.session.media.MediaUsageInfo
 import javax.inject.Inject
 
@@ -29,7 +28,7 @@ class SettingsViewModel @Inject constructor(
     val deactivateLiveData = SingleEventLiveData<Response<Unit?>>()
     val navigateToMatrixChangePasswordEvent = SingleEventLiveData<Unit>()
     val changePasswordResponseLiveData = SingleEventLiveData<Response<Unit?>>()
-    val mediaUsageInfoLiveData = MutableLiveData<MediaUsageInfo?>()
+    val mediaUsageInfoLiveData = SingleEventLiveData<Response<MediaUsageInfo?>>()
 
     fun logOut() {
         launchBg {
@@ -64,10 +63,10 @@ class SettingsViewModel @Inject constructor(
     fun getSharedCircleSpaceId(): String? = sharedCircleDataSource.getSharedCirclesSpaceId()
     fun updateMediaUsageInfo() {
         launchBg {
-            val mediaUsageInfo = tryOrNull {
+            val mediaUsageInfoResult = createResult {
                 MatrixSessionProvider.getSessionOrThrow().mediaService().getMediaUsage()
             }
-            mediaUsageInfoLiveData.postValue(mediaUsageInfo)
+            mediaUsageInfoLiveData.postValue(mediaUsageInfoResult)
         }
     }
 }
\ No newline at end of file
-- 
GitLab