From a561621a0ff19640a39fc1da38a4a4ba3e205590 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Wed, 14 Jun 2023 17:00:33 +0300
Subject: [PATCH] Move switch user and logout to auth

---
 .../circles/feature/settings/SettingsDataSource.kt | 14 --------------
 .../circles/feature/settings/SettingsFragment.kt   |  4 ++--
 .../circles/feature/settings/SettingsViewModel.kt  |  9 ++++++---
 .../org/futo/circles/model/ConfirmationType.kt     | 12 ------------
 app/src/main/res/values/strings.xml                |  3 ---
 .../futo/circles/auth/model/ConfirmationType.kt    | 12 ++++++++++++
 auth/src/main/res/values/strings.xml               |  5 +++++
 7 files changed, 25 insertions(+), 34 deletions(-)

diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsDataSource.kt b/app/src/main/java/org/futo/circles/feature/settings/SettingsDataSource.kt
index 0ff97506a..f09b610ea 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/SettingsDataSource.kt
+++ b/app/src/main/java/org/futo/circles/feature/settings/SettingsDataSource.kt
@@ -29,20 +29,6 @@ class SettingsDataSource @Inject constructor(
     val startReAuthEventLiveData = authConfirmationProvider.startReAuthEventLiveData
     val profileLiveData = session.userService().getUserLive(session.myUserId)
 
-    val loadingLiveData = MutableLiveData<LoadingData>()
-    private val loadingData = LoadingData(total = 0)
-
-    suspend fun logOut() = createResult {
-        loadingLiveData.postValue(
-            loadingData.apply {
-                messageId = R.string.log_out
-                isLoading = true
-            }
-        )
-        session.signOutService().signOut(true)
-        loadingLiveData.postValue(loadingData.apply { isLoading = false })
-    }
-
     suspend fun deactivateAccount(): Response<Unit> = createResult {
         session.accountService().deactivateAccount(false, authConfirmationProvider)
     }
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 f01f0ce7f..7b686aec8 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
@@ -14,6 +14,8 @@ import dagger.hilt.android.AndroidEntryPoint
 import org.futo.circles.BuildConfig
 import org.futo.circles.MainActivity
 import org.futo.circles.R
+import org.futo.circles.auth.model.LogOut
+import org.futo.circles.auth.model.SwitchUser
 import org.futo.circles.core.extensions.loadProfileIcon
 import org.futo.circles.core.extensions.notEmptyDisplayName
 import org.futo.circles.core.extensions.observeData
@@ -28,8 +30,6 @@ import org.futo.circles.databinding.FragmentSettingsBinding
 import org.futo.circles.feature.home.SystemNoticesCountSharedViewModel
 import org.futo.circles.feature.settings.active_sessions.verify.qr.QrScannerActivity
 import org.futo.circles.model.DeactivateAccount
-import org.futo.circles.model.LogOut
-import org.futo.circles.model.SwitchUser
 import org.matrix.android.sdk.api.session.user.model.User
 
 @AndroidEntryPoint
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 76e7e7d4a..9c1864c32 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
@@ -2,19 +2,22 @@ package org.futo.circles.feature.settings
 
 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.core.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.provider.MatrixSessionProvider
 import javax.inject.Inject
+
 @HiltViewModel
 class SettingsViewModel @Inject constructor(
-    private val settingsDataSource: SettingsDataSource
+    private val settingsDataSource: SettingsDataSource,
+    private val logoutDataSource: LogoutDataSource
 ) : ViewModel() {
 
     val profileLiveData = settingsDataSource.profileLiveData
-    val loadingLiveData = settingsDataSource.loadingLiveData
+    val loadingLiveData = logoutDataSource.loadingLiveData
     val passPhraseLoadingLiveData = settingsDataSource.passPhraseLoadingLiveData
     val startReAuthEventLiveData = settingsDataSource.startReAuthEventLiveData
     val logOutLiveData = SingleEventLiveData<Response<Unit?>>()
@@ -25,7 +28,7 @@ class SettingsViewModel @Inject constructor(
     val clearCacheLiveData = SingleEventLiveData<Unit>()
 
     fun logOut() {
-        launchBg { logOutLiveData.postValue(settingsDataSource.logOut()) }
+        launchBg { logOutLiveData.postValue(logoutDataSource.logOut()) }
     }
 
     fun deactivateAccount() {
diff --git a/app/src/main/java/org/futo/circles/model/ConfirmationType.kt b/app/src/main/java/org/futo/circles/model/ConfirmationType.kt
index 559d1fbb9..6e8ff2f39 100644
--- a/app/src/main/java/org/futo/circles/model/ConfirmationType.kt
+++ b/app/src/main/java/org/futo/circles/model/ConfirmationType.kt
@@ -10,18 +10,6 @@ data class DeactivateAccount(
     override val positiveButtonRes: Int = R.string.deactivate
 ) : ConfirmationType(titleRes, messageRes, positiveButtonRes)
 
-data class SwitchUser(
-    override val titleRes: Int = R.string.switch_user,
-    override val messageRes: Int = R.string.switch_user_message,
-    override val positiveButtonRes: Int = R.string.switch_str
-) : ConfirmationType(titleRes, messageRes, positiveButtonRes)
-
-data class LogOut(
-    override val titleRes: Int = R.string.log_out,
-    override val messageRes: Int = R.string.log_out_message,
-    override val positiveButtonRes: Int = R.string.log_out
-) : ConfirmationType(titleRes, messageRes, positiveButtonRes)
-
 data class IgnoreUser(
     override val titleRes: Int = R.string.ignore,
     override val messageRes: Int = R.string.ignore_user_message,
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 771da2934..4cc7fe016 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -52,7 +52,6 @@
     <string name="private_circles">Private Circles</string>
     <string name="log_out">Log out</string>
     <string name="others">Others</string>
-    <string name="log_out_message">Are you sure you want to log out?</string>
     <string name="session_is_not_created">Session is not created</string>
     <string name="following_format">Following %d</string>
     <string name="followed_by_format">Followed by %d</string>
@@ -206,8 +205,6 @@
     <string name="add_link">Add link</string>
     <string name="state_events">State events</string>
     <string name="switch_user">Switch User</string>
-    <string name="switch_str">Switch</string>
-    <string name="switch_user_message">Are you sure you want to switch user?</string>
     <string name="search_people">Search people</string>
     <string name="circle_type">Circle type</string>
     <string name="public_type">Public</string>
diff --git a/auth/src/main/java/org/futo/circles/auth/model/ConfirmationType.kt b/auth/src/main/java/org/futo/circles/auth/model/ConfirmationType.kt
index b4abc65e8..78ae19312 100644
--- a/auth/src/main/java/org/futo/circles/auth/model/ConfirmationType.kt
+++ b/auth/src/main/java/org/futo/circles/auth/model/ConfirmationType.kt
@@ -7,4 +7,16 @@ data class RemoveUser(
     override val titleRes: Int = R.string.remove_user,
     override val messageRes: Int = R.string.remove_user_message,
     override val positiveButtonRes: Int = R.string.remove
+) : ConfirmationType(titleRes, messageRes, positiveButtonRes)
+
+data class SwitchUser(
+    override val titleRes: Int = R.string.switch_user,
+    override val messageRes: Int = R.string.switch_user_message,
+    override val positiveButtonRes: Int = R.string.switch_str
+) : ConfirmationType(titleRes, messageRes, positiveButtonRes)
+
+data class LogOut(
+    override val titleRes: Int = R.string.log_out,
+    override val messageRes: Int = R.string.log_out_message,
+    override val positiveButtonRes: Int = R.string.log_out
 ) : ConfirmationType(titleRes, messageRes, positiveButtonRes)
\ No newline at end of file
diff --git a/auth/src/main/res/values/strings.xml b/auth/src/main/res/values/strings.xml
index 192e8bba0..f2c03307d 100644
--- a/auth/src/main/res/values/strings.xml
+++ b/auth/src/main/res/values/strings.xml
@@ -99,6 +99,11 @@
     <string name="item_not_owned">Item is not owned</string>
     <string name="developer_error">Developer error</string>
     <string name="purchase_failed_format">Purchase failed with code %d</string>
+    <string name="log_out">Log out</string>
+    <string name="log_out_message">Are you sure you want to log out?</string>
+    <string name="switch_user">Switch User</string>
+    <string name="switch_user_message">Are you sure you want to switch user?</string>
+    <string name="switch_str">Switch</string>
 
     <plurals name="days">
         <item quantity="one">%1$d day</item>
-- 
GitLab