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