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.