Fix / settings showing bad options when xsigning not init

This commit is contained in:
Valere 2020-06-29 10:23:11 +02:00
parent 5c091339f0
commit 51228a3a5c
6 changed files with 36 additions and 9 deletions

View file

@ -21,4 +21,5 @@ import im.vector.riotx.core.platform.VectorViewModelAction
sealed class CrossSigningSettingsAction : VectorViewModelAction {
object SetUpRecovery : CrossSigningSettingsAction()
object VerifySession : CrossSigningSettingsAction()
object SetupCrossSigning : CrossSigningSettingsAction()
}

View file

@ -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()
}
}
}
}

View file

@ -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)
}
}

View file

@ -26,4 +26,5 @@ sealed class CrossSigningSettingsViewEvents : VectorViewEvents {
object SetUpRecovery : CrossSigningSettingsViewEvents()
object VerifySession : CrossSigningSettingsViewEvents()
object SetupCrossSigning : CrossSigningSettingsViewEvents()
}

View file

@ -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
}

View file

@ -2372,6 +2372,7 @@ Not all features in Riot are implemented in RiotX yet. Main missing (and coming
<string name="room_message_placeholder">Message…</string>
<string name="upgrade_security">Encryption upgrade available</string>
<string name="setup_cross_signing">Enable Cross Signing</string>
<string name="security_prompt_text">Verify yourself &amp; others to keep your chats safe</string>
<!-- %s will be replaced by recovery_key -->