diff --git a/CHANGES.md b/CHANGES.md index 1ec6d091a9..e0031644a6 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -7,7 +7,7 @@ Features ✨: Improvements 🙌: - You can now join room through permalink and within room directory search - Add long click gesture to copy userId, user display name, room name, room topic and room alias (#1774) - - Do not propose to verify session if there is only one session (#1901) + - Do not propose to verify session if there is only one session and 4S is not configured (#1901) Bugfix 🐛: - Display name not shown under Settings/General (#1926) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheetController.kt b/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheetController.kt index 9c7615c94b..25a98bb4b5 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheetController.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheetController.kt @@ -89,14 +89,18 @@ class DeviceVerificationInfoBottomSheetController @Inject constructor( title(stringProvider.getString(R.string.encryption_information_verified)) description(stringProvider.getString(R.string.settings_active_sessions_verified_device_desc)) } - } else if (data.hasOtherSessions) { - // You need to complete security, only if there are other session(s) available + } else if (data.canVerifySession) { + // You need to complete security, only if there are other session(s) available, or if 4S contains secrets genericItem { id("trust${cryptoDeviceInfo.deviceId}") style(GenericItem.STYLE.BIG_TEXT) titleIconResourceId(shield) title(stringProvider.getString(R.string.crosssigning_verify_this_session)) - description(stringProvider.getString(R.string.confirm_your_identity)) + if (data.hasOtherSessions) { + description(stringProvider.getString(R.string.confirm_your_identity)) + } else { + description(stringProvider.getString(R.string.confirm_your_identity_quad_s)) + } } } } else { @@ -133,7 +137,7 @@ class DeviceVerificationInfoBottomSheetController @Inject constructor( description("(${cryptoDeviceInfo.deviceId})") } - if (isMine && !currentSessionIsTrusted && data.hasOtherSessions) { + if (isMine && !currentSessionIsTrusted && data.canVerifySession) { // Add complete security dividerItem { id("completeSecurityDiv") diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheetViewModel.kt b/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheetViewModel.kt index 34e3c566fb..ad840d2efb 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheetViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheetViewModel.kt @@ -43,7 +43,8 @@ class DeviceVerificationInfoBottomSheetViewModel @AssistedInject constructor(@As setState { copy( hasAccountCrossSigning = session.cryptoService().crossSigningService().isCrossSigningInitialized(), - accountCrossSigningIsTrusted = session.cryptoService().crossSigningService().isCrossSigningVerified() + accountCrossSigningIsTrusted = session.cryptoService().crossSigningService().isCrossSigningVerified(), + isRecoverySetup = session.sharedSecretStorageService.isRecoverySetup() ) } session.rx().liveCrossSigningInfo(session.myUserId) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheetViewState.kt b/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheetViewState.kt index 61e4aa6f4d..a736b0442c 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheetViewState.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheetViewState.kt @@ -28,5 +28,10 @@ data class DeviceVerificationInfoBottomSheetViewState( val hasAccountCrossSigning: Boolean = false, val accountCrossSigningIsTrusted: Boolean = false, val isMine: Boolean = false, - val hasOtherSessions: Boolean = false -) : MvRxState + val hasOtherSessions: Boolean = false, + val isRecoverySetup: Boolean = false +) : MvRxState { + + val canVerifySession: Boolean + get() = hasOtherSessions || isRecoverySetup +} diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml index 7506a4d502..2e031cfd4f 100644 --- a/vector/src/main/res/values/strings.xml +++ b/vector/src/main/res/values/strings.xml @@ -2413,6 +2413,7 @@ Verify login Interactively Verify by Emoji Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages. + Confirm your identity by verifying this login, granting it access to encrypted messages. Mark as Trusted Please choose a username.