diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/VerificationBottomSheet.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/VerificationBottomSheet.kt index ddd647fd8d..5b7adbdb91 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/VerificationBottomSheet.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/VerificationBottomSheet.kt @@ -36,6 +36,7 @@ import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.session.crypto.crosssigning.MASTER_KEY_SSSS_NAME import im.vector.matrix.android.api.session.crypto.crosssigning.SELF_SIGNING_KEY_SSSS_NAME import im.vector.matrix.android.api.session.crypto.crosssigning.USER_SIGNING_KEY_SSSS_NAME +import im.vector.matrix.android.api.session.crypto.verification.CancelCode import im.vector.matrix.android.api.session.crypto.verification.VerificationTxState import im.vector.riotx.R import im.vector.riotx.core.di.ScreenComponent @@ -263,7 +264,14 @@ class VerificationBottomSheet : VectorBaseBottomSheetDialogFragment() { // Transaction has not yet started if (state.pendingRequest.invoke()?.cancelConclusion != null) { // The request has been declined, we should dismiss - dismiss() + otherUserNameText.text = getString(R.string.verification_cancelled) + showFragment(VerificationConclusionFragment::class, Bundle().apply { + putParcelable(MvRx.KEY_ARG, VerificationConclusionFragment.Args( + false, + state.pendingRequest.invoke()?.cancelConclusion?.value ?: CancelCode.User.value, + state.isMe)) + }) + return@withState } // If it's an outgoing @@ -308,6 +316,10 @@ class VerificationBottomSheet : VectorBaseBottomSheetDialogFragment() { } } + override fun dismiss() { + super.dismiss() + } + companion object { const val SECRET_REQUEST_CODE = 101 diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/conclusion/VerificationConclusionController.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/conclusion/VerificationConclusionController.kt index 9719651bd4..33da6572b9 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/conclusion/VerificationConclusionController.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/conclusion/VerificationConclusionController.kt @@ -58,6 +58,8 @@ class VerificationConclusionController @Inject constructor( id("image") imageRes(R.drawable.ic_shield_trusted) } + + bottomDone() } ConclusionState.WARNING -> { bottomSheetVerificationNoticeItem { @@ -74,10 +76,34 @@ class VerificationConclusionController @Inject constructor( id("warning_notice") notice(eventHtmlRenderer.render(stringProvider.getString(R.string.verification_conclusion_compromised))) } + + bottomDone() + } + ConclusionState.CANCELLED -> { + bottomSheetVerificationNoticeItem { + id("notice_cancelled") + notice(stringProvider.getString(R.string.verify_cancelled_notice)) + } + + dividerItem { + id("sep0") + } + + bottomSheetVerificationActionItem { + id("got_it") + title(stringProvider.getString(R.string.sas_got_it)) + titleColor(colorProvider.getColor(R.color.riotx_accent)) + iconRes(R.drawable.ic_arrow_right) + iconColor(colorProvider.getColor(R.color.riotx_accent)) + listener { listener?.onButtonTapped() } + + } } - else -> Unit } + } + + private fun bottomDone() { dividerItem { id("sep0") } diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/conclusion/VerificationConclusionFragment.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/conclusion/VerificationConclusionFragment.kt index 854809084e..7405722c04 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/conclusion/VerificationConclusionFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/conclusion/VerificationConclusionFragment.kt @@ -66,12 +66,7 @@ class VerificationConclusionFragment @Inject constructor( } override fun invalidate() = withState(viewModel) { state -> - if (state.conclusionState == ConclusionState.CANCELLED) { - // Just dismiss in this case - sharedViewModel.handle(VerificationAction.GotItConclusion) - } else { - controller.update(state) - } + controller.update(state) } override fun onButtonTapped() { diff --git a/vector/src/main/res/values/strings_riotX.xml b/vector/src/main/res/values/strings_riotX.xml index c18932da1b..de28f316fa 100644 --- a/vector/src/main/res/values/strings_riotX.xml +++ b/vector/src/main/res/values/strings_riotX.xml @@ -28,6 +28,9 @@ One of the following may be compromised:\n\n- Your password\n- Your homeserver\n- This device, or the other device\n- The internet connection either device is using\n\nWe recommend you change your password & recovery key in Settings immediately. + Verify your devices from Settings. + Verification Cancelled +