diff --git a/changelog.d/6395.bugfix b/changelog.d/6395.bugfix new file mode 100644 index 0000000000..ebc22dc41a --- /dev/null +++ b/changelog.d/6395.bugfix @@ -0,0 +1 @@ +Display specific message when verification QR code is malformed diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/verification/qrcode/DefaultQrCodeVerificationTransaction.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/verification/qrcode/DefaultQrCodeVerificationTransaction.kt index 690ac12268..5b1a4752f1 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/verification/qrcode/DefaultQrCodeVerificationTransaction.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/verification/qrcode/DefaultQrCodeVerificationTransaction.kt @@ -84,7 +84,7 @@ internal class DefaultQrCodeVerificationTransaction( // Perform some checks if (otherQrCodeData.transactionId != transactionId) { Timber.d("## Verification QR: Invalid transaction actual ${otherQrCodeData.transactionId} expected:$transactionId") - cancel(CancelCode.QrCodeInvalid) + cancel(CancelCode.UnknownTransaction) return } diff --git a/vector/src/main/java/im/vector/app/features/crypto/verification/conclusion/VerificationConclusionController.kt b/vector/src/main/java/im/vector/app/features/crypto/verification/conclusion/VerificationConclusionController.kt index 9c5829eb8e..7bd0e393eb 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/verification/conclusion/VerificationConclusionController.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/verification/conclusion/VerificationConclusionController.kt @@ -86,6 +86,14 @@ class VerificationConclusionController @Inject constructor( bottomGotIt() } + ConclusionState.INVALID_QR_CODE -> { + bottomSheetVerificationNoticeItem { + id("invalid_qr") + notice(host.stringProvider.getString(R.string.verify_invalid_qr_notice).toEpoxyCharSequence()) + } + + bottomGotIt() + } ConclusionState.CANCELLED -> { bottomSheetVerificationNoticeItem { id("notice_cancelled") diff --git a/vector/src/main/java/im/vector/app/features/crypto/verification/conclusion/VerificationConclusionViewModel.kt b/vector/src/main/java/im/vector/app/features/crypto/verification/conclusion/VerificationConclusionViewModel.kt index aff2d807ac..8883ffb94e 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/verification/conclusion/VerificationConclusionViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/verification/conclusion/VerificationConclusionViewModel.kt @@ -32,7 +32,8 @@ data class VerificationConclusionViewState( enum class ConclusionState { SUCCESS, WARNING, - CANCELLED + CANCELLED, + INVALID_QR_CODE } class VerificationConclusionViewModel(initialState: VerificationConclusionViewState) : @@ -44,7 +45,9 @@ class VerificationConclusionViewModel(initialState: VerificationConclusionViewSt val args = viewModelContext.args() return when (safeValueOf(args.cancelReason)) { - CancelCode.QrCodeInvalid, + CancelCode.QrCodeInvalid -> { + VerificationConclusionViewState(ConclusionState.INVALID_QR_CODE, args.isMe) + } CancelCode.MismatchedUser, CancelCode.MismatchedSas, CancelCode.MismatchedCommitment, diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml index ed0cf691e2..b699ddae2f 100644 --- a/vector/src/main/res/values/strings.xml +++ b/vector/src/main/res/values/strings.xml @@ -2436,6 +2436,7 @@ Verification has been cancelled. You can start verification again. + This QR code looks malformed. Please try to verify with another method. Verification Cancelled Recovery Passphrase