From 2c5b54e5a2d3eec53d0616b625c0bd394d859052 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Thu, 9 Nov 2023 16:15:14 +0200
Subject: [PATCH] Fix key sharing

---
 .idea/jarRepositories.xml                                 | 5 +++++
 .../session/room/membership/DefaultMembershipService.kt   | 8 +-------
 .../android/sdk/internal/crypto/RustCryptoService.kt      | 2 ++
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index c6930dba..3547ecd1 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -36,5 +36,10 @@
       <option name="name" value="MavenRepo" />
       <option name="url" value="https://repo.maven.apache.org/maven2/" />
     </remote-repository>
+    <remote-repository>
+      <option name="id" value="maven2" />
+      <option name="name" value="maven2" />
+      <option name="url" value="https://gitlab.futo.org/api/v4/projects/130/packages/maven" />
+    </remote-repository>
   </component>
 </project>
\ No newline at end of file
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/membership/DefaultMembershipService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/membership/DefaultMembershipService.kt
index fa6c2a95..477d970f 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/membership/DefaultMembershipService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/membership/DefaultMembershipService.kt
@@ -30,8 +30,6 @@ import org.matrix.android.sdk.api.session.room.members.MembershipService
 import org.matrix.android.sdk.api.session.room.members.RoomMemberQueryParams
 import org.matrix.android.sdk.api.session.room.model.Membership
 import org.matrix.android.sdk.api.session.room.model.RoomMemberSummary
-import org.matrix.android.sdk.internal.crypto.store.db.model.CryptoRoomEntity
-import org.matrix.android.sdk.internal.crypto.store.db.query.getById
 import org.matrix.android.sdk.internal.database.mapper.asDomain
 import org.matrix.android.sdk.internal.database.model.RoomMemberSummaryEntity
 import org.matrix.android.sdk.internal.database.model.RoomMemberSummaryEntityFields
@@ -157,11 +155,7 @@ internal class DefaultMembershipService @AssistedInject constructor(
     }
 
     private suspend fun sendShareHistoryKeysIfNeeded(userId: String) {
-        val room = monarchy.fetchCopied {
-            CryptoRoomEntity.getById(it, roomId)
-        } ?: return
-        if (room.shouldEncryptForInvitedMembers == true && room.shouldShareHistory)
-            cryptoService.sendSharedHistoryKeys(roomId, userId, null)
+        cryptoService.sendSharedHistoryKeys(roomId, userId, null)
     }
 
     override suspend fun invite3pid(threePid: ThreePid) {
diff --git a/matrix-sdk-android/src/rustCrypto/java/org/matrix/android/sdk/internal/crypto/RustCryptoService.kt b/matrix-sdk-android/src/rustCrypto/java/org/matrix/android/sdk/internal/crypto/RustCryptoService.kt
index a1a31698..3cb7aabb 100755
--- a/matrix-sdk-android/src/rustCrypto/java/org/matrix/android/sdk/internal/crypto/RustCryptoService.kt
+++ b/matrix-sdk-android/src/rustCrypto/java/org/matrix/android/sdk/internal/crypto/RustCryptoService.kt
@@ -901,6 +901,8 @@ internal class RustCryptoService @Inject constructor(
     override suspend fun prepareToEncrypt(roomId: String) = prepareToEncrypt.invoke(roomId, ensureAllMembersAreLoaded = true)
 
     override suspend fun sendSharedHistoryKeys(roomId: String, userId: String, sessionInfoSet: Set<SessionInfo>?) {
+        val cryptoInfo = cryptoStore.getRoomCryptoInfo(roomId) ?: return
+        if (cryptoInfo.shouldShareHistory.not()) return
         withContext(coroutineDispatchers.crypto) {
             downloadKeysIfNeeded(listOf(userId))
             getUserDevices(userId)
-- 
GitLab