diff --git a/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileAction.kt b/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileAction.kt index 9122b180e8..5b890d1ef6 100644 --- a/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileAction.kt +++ b/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileAction.kt @@ -23,5 +23,5 @@ sealed class RoomMemberProfileAction : VectorViewModelAction { object RetryFetchingInfo: RoomMemberProfileAction() object IgnoreUser: RoomMemberProfileAction() - data class VerifyUser(val userId: String? = null, val roomId: String? = null): RoomMemberProfileAction() + data class VerifyUser(val userId: String? = null, val roomId: String? = null, val canCrossSign: Boolean? = true): RoomMemberProfileAction() } diff --git a/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileFragment.kt b/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileFragment.kt index cce105619a..e9ecbf78e3 100644 --- a/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileFragment.kt @@ -20,6 +20,7 @@ package im.vector.riotx.features.roommemberprofile import android.os.Bundle import android.os.Parcelable import android.view.View +import androidx.appcompat.app.AlertDialog import androidx.core.view.isVisible import com.airbnb.mvrx.Fail import com.airbnb.mvrx.Incomplete @@ -100,9 +101,22 @@ class RoomMemberProfileFragment @Inject constructor( is Success -> { when (val action = async.invoke()) { is RoomMemberProfileAction.VerifyUser -> { - VerificationBottomSheet - .withArgs(roomId = null, otherUserId = action.userId!!) - .show(parentFragmentManager, "VERIF") + if (action.canCrossSign == true) { + VerificationBottomSheet + .withArgs(roomId = null, otherUserId = action.userId!!) + .show(parentFragmentManager, "VERIF") + } else { + AlertDialog.Builder(requireContext()) + .setTitle(R.string.dialog_title_warning) + .setMessage(R.string.verify_cannot_cross_sign) + .setPositiveButton(R.string.verification_profile_verify) { _, _ -> + VerificationBottomSheet + .withArgs(roomId = null, otherUserId = action.userId!!) + .show(parentFragmentManager, "VERIF") + } + .setNegativeButton(R.string.cancel, null) + .show() + } } } } diff --git a/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileViewModel.kt index 1820262b49..bbccab3913 100644 --- a/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roommemberprofile/RoomMemberProfileViewModel.kt @@ -149,7 +149,12 @@ class RoomMemberProfileViewModel @AssistedInject constructor(@Assisted private v if (!state.isMine && state.userMXCrossSigningInfo?.isTrusted() == false) { // ok, let's find or create the DM room _actionResultLiveData.postValue( - LiveEvent(Success(action.copy(userId = state.userId))) + LiveEvent(Success( + action.copy( + userId = state.userId, + canCrossSign = session.getCrossSigningService().canCrossSign() + ) + )) ) } } diff --git a/vector/src/main/res/values/strings_riotX.xml b/vector/src/main/res/values/strings_riotX.xml index bf6bcf40d3..d093f2b4d5 100644 --- a/vector/src/main/res/values/strings_riotX.xml +++ b/vector/src/main/res/values/strings_riotX.xml @@ -91,6 +91,8 @@ Unignore + This session is unable to share this verification with your other sessions.\nThe verification will be saved locally and shared in a future version of the app. + Recent rooms Other rooms