From 51228a3a5c4992c3b0ed072081c34b7403dc0c4d Mon Sep 17 00:00:00 2001 From: Valere Date: Mon, 29 Jun 2020 10:23:11 +0200 Subject: [PATCH] Fix / settings showing bad options when xsigning not init --- .../CrossSigningSettingsAction.kt | 1 + .../CrossSigningSettingsController.kt | 29 ++++++++++++++----- .../CrossSigningSettingsFragment.kt | 7 +++++ .../CrossSigningSettingsViewEvents.kt | 1 + .../CrossSigningSettingsViewModel.kt | 6 ++-- vector/src/main/res/values/strings.xml | 1 + 6 files changed, 36 insertions(+), 9 deletions(-) diff --git a/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsAction.kt b/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsAction.kt index 14f240e818..fbc5ba05cc 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsAction.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsAction.kt @@ -21,4 +21,5 @@ import im.vector.riotx.core.platform.VectorViewModelAction sealed class CrossSigningSettingsAction : VectorViewModelAction { object SetUpRecovery : CrossSigningSettingsAction() object VerifySession : CrossSigningSettingsAction() + object SetupCrossSigning : CrossSigningSettingsAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsController.kt b/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsController.kt index 1f13a18a88..5f0fb912cf 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsController.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsController.kt @@ -35,6 +35,7 @@ class CrossSigningSettingsController @Inject constructor( interface InteractionListener { fun setupRecovery() fun verifySession() + fun initCrossSigning() } var interactionListener: InteractionListener? = null @@ -72,13 +73,27 @@ class CrossSigningSettingsController @Inject constructor( } if (data.recoveryHasToBeSetUp) { - bottomSheetVerificationActionItem { - id("setup_recovery") - title(stringProvider.getString(R.string.settings_setup_secure_backup)) - titleColor(colorProvider.getColorFromAttribute(R.attr.riotx_text_primary)) - iconRes(R.drawable.ic_arrow_right) - listener { - interactionListener?.setupRecovery() + if (data.xSigningIsEnableInAccount) { + bottomSheetVerificationActionItem { + id("setup_recovery") + title(stringProvider.getString(R.string.settings_setup_secure_backup)) + titleColor(colorProvider.getColorFromAttribute(R.attr.riotx_text_primary)) + iconRes(R.drawable.ic_arrow_right) + listener { + interactionListener?.setupRecovery() + } + } + } else { + // Propose to setup cross signing + bottomSheetVerificationActionItem { + id("setup_xSgning") + title(stringProvider.getString(R.string.setup_cross_signing)) + titleColor(colorProvider.getColorFromAttribute(R.attr.riotx_text_primary)) + subTitle(stringProvider.getString(R.string.security_prompt_text)) + iconRes(R.drawable.ic_arrow_right) + listener { + interactionListener?.initCrossSigning() + } } } } diff --git a/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsFragment.kt b/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsFragment.kt index ce6e73d44b..37d9677f7f 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsFragment.kt @@ -56,6 +56,9 @@ class CrossSigningSettingsFragment @Inject constructor( CrossSigningSettingsViewEvents.SetUpRecovery -> { navigator.upgradeSessionSecurity(requireActivity(), false) } + CrossSigningSettingsViewEvents.SetupCrossSigning -> { + navigator.upgradeSessionSecurity(requireActivity(), true) + } }.exhaustive } } @@ -92,4 +95,8 @@ class CrossSigningSettingsFragment @Inject constructor( override fun verifySession() { viewModel.handle(CrossSigningSettingsAction.VerifySession) } + + override fun initCrossSigning() { + viewModel.handle(CrossSigningSettingsAction.SetupCrossSigning) + } } diff --git a/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsViewEvents.kt b/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsViewEvents.kt index 18092be92b..584116239a 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsViewEvents.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsViewEvents.kt @@ -26,4 +26,5 @@ sealed class CrossSigningSettingsViewEvents : VectorViewEvents { object SetUpRecovery : CrossSigningSettingsViewEvents() object VerifySession : CrossSigningSettingsViewEvents() + object SetupCrossSigning : CrossSigningSettingsViewEvents() } diff --git a/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsViewModel.kt index 4a6eec81d9..29c1ed3371 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/crosssigning/CrossSigningSettingsViewModel.kt @@ -55,8 +55,7 @@ class CrossSigningSettingsViewModel @AssistedInject constructor(@Assisted privat xSigningIsEnableInAccount = xSigningIsEnableInAccount, xSigningKeysAreTrusted = xSigningKeysAreTrusted, xSigningKeyCanSign = xSigningKeyCanSign, - - deviceHasToBeVerified = hasSeveralDevices && (xSigningIsEnableInAccount || xSigningKeysAreTrusted), + deviceHasToBeVerified = hasSeveralDevices && (xSigningIsEnableInAccount && !xSigningKeyCanSign), recoveryHasToBeSetUp = !session.sharedSecretStorageService.isRecoverySetup() ) } @@ -75,6 +74,9 @@ class CrossSigningSettingsViewModel @AssistedInject constructor(@Assisted privat CrossSigningSettingsAction.VerifySession -> { _viewEvents.post(CrossSigningSettingsViewEvents.VerifySession) } + CrossSigningSettingsAction.SetupCrossSigning -> { + _viewEvents.post(CrossSigningSettingsViewEvents.SetupCrossSigning) + } }.exhaustive } diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml index 811fc134d7..0fd3ba8d51 100644 --- a/vector/src/main/res/values/strings.xml +++ b/vector/src/main/res/values/strings.xml @@ -2372,6 +2372,7 @@ Not all features in Riot are implemented in RiotX yet. Main missing (and coming Messageā€¦ Encryption upgrade available + Enable Cross Signing Verify yourself & others to keep your chats safe