Skip to content

Commit 5cfe218

Browse files
Wrap only cryptoService.decryptEvent with runBlocking instead of the whole methods
1 parent 51b4292 commit 5cfe218

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/helper/ThreadSummaryHelper.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,15 +213,15 @@ internal fun ThreadSummaryEntity.Companion.createOrUpdate(
213213
}
214214
}
215215

216-
// note: runBlocking should be used here while we are in realm single thread executor, to avoid thread switching
217-
private fun decryptIfNeeded(cryptoService: CryptoService?, eventEntity: EventEntity, roomId: String) = runBlocking {
218-
cryptoService ?: return@runBlocking
216+
private fun decryptIfNeeded(cryptoService: CryptoService?, eventEntity: EventEntity, roomId: String) {
217+
cryptoService ?: return
219218
val event = eventEntity.asDomain()
220219
if (event.isEncrypted() && event.mxDecryptionResult == null && event.eventId != null) {
221220
try {
222221
Timber.i("###THREADS ThreadSummaryHelper request decryption for eventId:${event.eventId}")
223222
// Event from sync does not have roomId, so add it to the event first
224-
val result = cryptoService.decryptEvent(event.copy(roomId = roomId), "")
223+
// note: runBlocking should be used here while we are in realm single thread executor, to avoid thread switching
224+
val result = runBlocking { cryptoService.decryptEvent(event.copy(roomId = roomId), "") }
225225
event.mxDecryptionResult = OlmDecryptionResult(
226226
payload = result.clearEvent,
227227
senderKey = result.senderCurve25519Key,

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/TimelineEventDecryptor.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,19 +119,19 @@ internal class TimelineEventDecryptor @Inject constructor(
119119
}
120120
}
121121

122-
// note: runBlocking should be used here while we are in realm single thread executor, to avoid thread switching
123-
private fun processDecryptRequest(request: DecryptionRequest, realm: Realm) = runBlocking {
122+
private fun processDecryptRequest(request: DecryptionRequest, realm: Realm) {
124123
val event = request.event
125124
val timelineId = request.timelineId
126125

127126
if (!request.event.isEncrypted()) {
128127
// Here we have requested a decryption to an event that is not encrypted
129128
// We will simply make this event thread aware
130129
threadAwareNonEncryptedEvents(request, realm)
131-
return@runBlocking
130+
return
132131
}
133132
try {
134-
val result = cryptoService.decryptEvent(request.event, timelineId)
133+
// note: runBlocking should be used here while we are in realm single thread executor, to avoid thread switching
134+
val result = runBlocking { cryptoService.decryptEvent(request.event, timelineId) }
135135
Timber.v("Successfully decrypted event ${event.eventId}")
136136
realm.executeTransaction {
137137
val eventId = event.eventId ?: return@executeTransaction

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/handler/room/RoomSyncHandler.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,8 @@ internal class RoomSyncHandler @Inject constructor(private val readReceiptHandle
423423
roomId = roomId,
424424
eventEntity = eventEntity,
425425
direction = PaginationDirection.FORWARDS,
426-
roomMemberContentsByUser = roomMemberContentsByUser)
426+
roomMemberContentsByUser = roomMemberContentsByUser
427+
)
427428
if (lightweightSettingsStorage.areThreadMessagesEnabled()) {
428429
eventEntity.rootThreadEventId?.let {
429430
// This is a thread event
@@ -439,7 +440,8 @@ internal class RoomSyncHandler @Inject constructor(private val readReceiptHandle
439440
threadEventEntity = eventEntity,
440441
roomMemberContentsByUser = roomMemberContentsByUser,
441442
userId = userId,
442-
roomEntity = roomEntity)
443+
roomEntity = roomEntity
444+
)
443445
}
444446
} ?: run {
445447
// This is a normal event or a root thread one
@@ -477,7 +479,8 @@ internal class RoomSyncHandler @Inject constructor(private val readReceiptHandle
477479
roomId = roomId,
478480
realm = realm,
479481
chunkEntity = chunkEntity,
480-
currentUserId = userId)
482+
currentUserId = userId
483+
)
481484
}
482485

483486
// posting new events to timeline if any is registered
@@ -507,11 +510,11 @@ internal class RoomSyncHandler @Inject constructor(private val readReceiptHandle
507510
}
508511
}
509512

510-
// note: runBlocking should be used here while we are in realm single thread executor, to avoid thread switching
511-
private fun decryptIfNeeded(event: Event, roomId: String) = runBlocking {
513+
private fun decryptIfNeeded(event: Event, roomId: String) {
512514
try {
513515
// Event from sync does not have roomId, so add it to the event first
514-
val result = cryptoService.decryptEvent(event.copy(roomId = roomId), "")
516+
// note: runBlocking should be used here while we are in realm single thread executor, to avoid thread switching
517+
val result = runBlocking { cryptoService.decryptEvent(event.copy(roomId = roomId), "") }
515518
event.mxDecryptionResult = OlmDecryptionResult(
516519
payload = result.clearEvent,
517520
senderKey = result.senderCurve25519Key,

0 commit comments

Comments
 (0)