From 253b2d4f9327ef80598bf88e446c83f980ea4d54 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Mon, 25 Sep 2023 14:36:03 +0300
Subject: [PATCH] Fix logout loading

---
 .../circles/feature/settings/SettingsFragment.kt  | 13 ++++++++-----
 .../circles/feature/settings/SettingsViewModel.kt |  1 -
 .../feature/log_in/log_out/LogoutDataSource.kt    | 11 +----------
 .../core/room/create/CreateRoomViewModel.kt       | 15 +++++++--------
 4 files changed, 16 insertions(+), 24 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 3db4fc528..a69cbdfe1 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
@@ -46,7 +46,12 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
 
     private fun setupViews() {
         with(binding) {
-            tvLogout.setOnClickListener { withConfirmation(LogOut()) { viewModel.logOut() } }
+            tvLogout.setOnClickListener {
+                withConfirmation(LogOut()) {
+                    loadingDialog.handleLoading(LoadingData(R.string.log_out))
+                    viewModel.logOut()
+                }
+            }
             tvSwitchUser.setOnClickListener { withConfirmation(SwitchUser()) { (activity as? MainActivity)?.stopSyncAndRestart() } }
             ivProfile.setOnClickListener { navigator.navigateToProfile() }
             tvChangePassword.setOnClickListener { viewModel.handleChangePasswordFlow() }
@@ -68,14 +73,12 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
 
     private fun setupObservers() {
         viewModel.logOutLiveData.observeResponse(this,
-            success = { clearSessionAndRestart() }
+            success = { clearSessionAndRestart() },
+            onRequestInvoked = { loadingDialog.dismiss() }
         )
         viewModel.profileLiveData.observeData(this) {
             it.getOrNull()?.let { bindProfile(it) }
         }
-        viewModel.loadingLiveData.observeData(this) {
-            loadingDialog.handleLoading(it)
-        }
         viewModel.deactivateLiveData.observeResponse(this,
             success = { clearSessionAndRestart() },
             error = { showError(getString(org.futo.circles.auth.R.string.invalid_auth)) },
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 deac30615..74dc58f7b 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
@@ -17,7 +17,6 @@ class SettingsViewModel @Inject constructor(
 ) : ViewModel() {
 
     val profileLiveData = settingsDataSource.profileLiveData
-    val loadingLiveData = logoutDataSource.loadingLiveData
     val passPhraseLoadingLiveData = settingsDataSource.passPhraseLoadingLiveData
     val startReAuthEventLiveData = settingsDataSource.startReAuthEventLiveData
     val logOutLiveData = SingleEventLiveData<Response<Unit?>>()
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/log_in/log_out/LogoutDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/log_in/log_out/LogoutDataSource.kt
index 1c210520e..95ce658c1 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/log_in/log_out/LogoutDataSource.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/log_in/log_out/LogoutDataSource.kt
@@ -1,22 +1,13 @@
 package org.futo.circles.auth.feature.log_in.log_out
 
-import androidx.lifecycle.MutableLiveData
-import org.futo.circles.auth.R
 import org.futo.circles.core.extensions.createResult
-import org.futo.circles.core.model.LoadingData
 import org.futo.circles.core.provider.MatrixSessionProvider
 import javax.inject.Inject
 
 class LogoutDataSource @Inject constructor() {
 
-    private val session = MatrixSessionProvider.getSessionOrThrow()
-
-    val loadingLiveData = MutableLiveData<LoadingData>()
-
     suspend fun logOut() = createResult {
-        loadingLiveData.postValue(LoadingData(messageId = R.string.log_out))
-        session.signOutService().signOut(true)
-        loadingLiveData.postValue(LoadingData(isLoading = false))
+        MatrixSessionProvider.getSessionOrThrow().signOutService().signOut(true)
     }
 
 }
\ No newline at end of file
diff --git a/core/src/main/java/org/futo/circles/core/room/create/CreateRoomViewModel.kt b/core/src/main/java/org/futo/circles/core/room/create/CreateRoomViewModel.kt
index 53dfd028d..27e8457a5 100644
--- a/core/src/main/java/org/futo/circles/core/room/create/CreateRoomViewModel.kt
+++ b/core/src/main/java/org/futo/circles/core/room/create/CreateRoomViewModel.kt
@@ -59,14 +59,13 @@ class CreateRoomViewModel @Inject constructor(
         name: String,
         inviteIds: List<String>?,
         isPublicCircle: Boolean
-    ) =
-        dataSource.createRoom(
-            circlesRoom = Circle(),
-            name = name,
-            iconUri = selectedImageLiveData.value,
-            inviteIds = inviteIds,
-            isPublicCircle = isPublicCircle
-        )
+    ) = dataSource.createRoom(
+        circlesRoom = Circle(),
+        name = name,
+        iconUri = selectedImageLiveData.value,
+        inviteIds = inviteIds,
+        isPublicCircle = isPublicCircle
+    )
 
     private suspend fun createGallery(name: String) = dataSource.createRoom(
         circlesRoom = Gallery(),
-- 
GitLab