From c1a8bf828b9b5569a2e6498c7eec99a1d2c8597b Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoitm@matrix.org>
Date: Tue, 3 Jan 2023 15:15:15 +0100
Subject: [PATCH] Batch insertion of  `shouldEncryptForInvitedMembers`

---
 .../sdk/internal/crypto/store/db/CryptoStoreAggregator.kt | 3 ++-
 .../sdk/internal/crypto/store/db/RealmCryptoStore.kt      | 8 +++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/CryptoStoreAggregator.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/CryptoStoreAggregator.kt
index 529cad6869..165062f17c 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/CryptoStoreAggregator.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/CryptoStoreAggregator.kt
@@ -17,5 +17,6 @@
 package org.matrix.android.sdk.internal.crypto.store.db
 
 data class CryptoStoreAggregator(
-        val setShouldShareHistoryData: MutableMap<String, Boolean> = mutableMapOf()
+        val setShouldShareHistoryData: MutableMap<String, Boolean> = mutableMapOf(),
+        val setShouldEncryptForInvitedMembersData: MutableMap<String, Boolean> = mutableMapOf(),
 )
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt
index a98a7ee0ec..3f9e22140e 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt
@@ -708,9 +708,7 @@ internal class RealmCryptoStore @Inject constructor(
     }
 
     override fun setShouldEncryptForInvitedMembers(roomId: String, shouldEncryptForInvitedMembers: Boolean) {
-        doRealmTransaction(realmConfiguration) {
-            CryptoRoomEntity.getOrCreate(it, roomId).shouldEncryptForInvitedMembers = shouldEncryptForInvitedMembers
-        }
+        cryptoStoreAggregator?.setShouldEncryptForInvitedMembersData?.put(roomId, shouldEncryptForInvitedMembers)
     }
 
     override fun setShouldShareHistory(roomId: String, shouldShareHistory: Boolean) {
@@ -1832,6 +1830,10 @@ internal class RealmCryptoStore @Inject constructor(
             aggregator.setShouldShareHistoryData.map {
                 CryptoRoomEntity.getOrCreate(realm, it.key).shouldShareHistory = it.value
             }
+            // setShouldEncryptForInvitedMembers
+            aggregator.setShouldEncryptForInvitedMembersData.map {
+                CryptoRoomEntity.getOrCreate(realm, it.key).shouldEncryptForInvitedMembers = it.value
+            }
         }
         cryptoStoreAggregator = null
     }