From 68bee65e972104a3a26584d557e0fb38e2f319f4 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL Date: Mon, 26 Sep 2022 15:26:09 +0200 Subject: [PATCH] Confirm signout when it is current session --- .../v2/overview/SessionOverviewFragment.kt | 6 ++++++ .../v2/overview/SessionOverviewViewEvent.kt | 1 + .../v2/overview/SessionOverviewViewModel.kt | 15 +++++++++++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt index 3bd128ae42..341b0233b7 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewFragment.kt @@ -40,6 +40,7 @@ import im.vector.app.databinding.FragmentSessionOverviewBinding import im.vector.app.features.auth.ReAuthActivity import im.vector.app.features.crypto.recover.SetupMode import im.vector.app.features.settings.devices.v2.list.SessionInfoViewState +import im.vector.app.features.workers.signout.SignOutUiWorker import org.matrix.android.sdk.api.auth.data.LoginFlowTypes import javax.inject.Inject @@ -86,12 +87,17 @@ class SessionOverviewFragment : navigator.open4SSetup(requireActivity(), SetupMode.PASSPHRASE_AND_NEEDED_SECRETS_RESET) } is SessionOverviewViewEvent.RequestReAuth -> askForReAuthentication(it) + SessionOverviewViewEvent.ConfirmSignoutCurrentSession -> confirmSignoutCurrentSession() SessionOverviewViewEvent.SignoutSuccess -> viewNavigator.goBack(requireActivity()) is SessionOverviewViewEvent.SignoutError -> showFailure(it.error) } } } + private fun confirmSignoutCurrentSession() { + activity?.let { SignOutUiWorker(it).perform() } + } + private fun initSessionInfoView() { views.sessionOverviewInfo.onLearnMoreClickListener = { Toast.makeText(context, "Learn more verification status", Toast.LENGTH_LONG).show() diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewEvent.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewEvent.kt index 4ff31d1a81..0d8a2ac8af 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewEvent.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewEvent.kt @@ -28,6 +28,7 @@ sealed class SessionOverviewViewEvent : VectorViewEvents { val lastErrorCode: String? ) : SessionOverviewViewEvent() + object ConfirmSignoutCurrentSession : SessionOverviewViewEvent() object SignoutSuccess : SessionOverviewViewEvent() data class SignoutError(val error: Throwable) : SessionOverviewViewEvent() } diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt index aaf5c9d2a7..afdd28096f 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/overview/SessionOverviewViewModel.kt @@ -130,10 +130,21 @@ class SessionOverviewViewModel @AssistedInject constructor( // TODO add unit tests private fun handleSignoutSession() = withState { state -> - // TODO for current session: do the same process as sign out button in the general settings + if (state.deviceInfo.invoke()?.isCurrentDevice.orFalse()) { + handleSignoutCurrentSession() + } else { + handleSignoutOtherSession(state.deviceId) + } + } + + private fun handleSignoutCurrentSession() { + _viewEvents.post(SessionOverviewViewEvent.ConfirmSignoutCurrentSession) + } + + private fun handleSignoutOtherSession(deviceId: String) { viewModelScope.launch { setLoading(true) - val signoutResult = signout(state.deviceId) + val signoutResult = signout(deviceId) setLoading(false) if (signoutResult.isSuccess) {