From b45b90dcdfd8a3c1d9f85ca8bda67afcc4faa34b Mon Sep 17 00:00:00 2001
From: valere <valeref@matrix.org>
Date: Wed, 5 Apr 2023 12:12:40 +0200
Subject: [PATCH] Fix verification bottomsheet not updating

---
 .../internal/crypto/verification/RustVerificationService.kt   | 4 ++++
 .../crypto/verification/user/UserVerificationViewModel.kt     | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/matrix-sdk-android/src/rustCrypto/java/org/matrix/android/sdk/internal/crypto/verification/RustVerificationService.kt b/matrix-sdk-android/src/rustCrypto/java/org/matrix/android/sdk/internal/crypto/verification/RustVerificationService.kt
index b746039348..6afe25e4fb 100644
--- a/matrix-sdk-android/src/rustCrypto/java/org/matrix/android/sdk/internal/crypto/verification/RustVerificationService.kt
+++ b/matrix-sdk-android/src/rustCrypto/java/org/matrix/android/sdk/internal/crypto/verification/RustVerificationService.kt
@@ -173,6 +173,7 @@ internal class RustVerificationService @Inject constructor(
 
             Timber.d("## Verification: start for $sender")
             // update the request as the start updates it's state
+            verificationListenersHolder.dispatchRequestUpdated(request)
             verificationListenersHolder.dispatchTxUpdated(transaction)
         } else {
             // This didn't originate from a request, so tell our listeners that
@@ -322,6 +323,9 @@ internal class RustVerificationService @Inject constructor(
 
             if (sas != null) {
                 verificationListenersHolder.dispatchTxAdded(sas)
+                // we need to update the request as the state mapping depends on the
+                // sas or qr beeing started
+                verificationListenersHolder.dispatchRequestUpdated(request)
                 sas.transactionId
             } else {
                 Timber.w("Failed to start verification with method $method")
diff --git a/vector/src/main/java/im/vector/app/features/crypto/verification/user/UserVerificationViewModel.kt b/vector/src/main/java/im/vector/app/features/crypto/verification/user/UserVerificationViewModel.kt
index ed813d8d2a..2d81c11de3 100644
--- a/vector/src/main/java/im/vector/app/features/crypto/verification/user/UserVerificationViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/crypto/verification/user/UserVerificationViewModel.kt
@@ -166,8 +166,8 @@ class UserVerificationViewModel @AssistedInject constructor(
                             )
                         }
                     }
-                    it.getTransaction()?.let {
-                        val dClass = it.toDataClass()
+                    it.getTransaction()?.let { transaction ->
+                        val dClass = transaction.toDataClass()
                         if (dClass != null) {
                             setState {
                                 copy(