From a7c12aeb938eb23dd126b9a7307ba030cfcd0458 Mon Sep 17 00:00:00 2001 From: Valere Date: Wed, 3 Jul 2019 17:17:58 +0200 Subject: [PATCH] Start crypto manager before handling first sync events --- .../matrix/android/internal/crypto/CryptoManager.kt | 8 ++++---- .../internal/session/sync/SyncResponseHandler.kt | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/CryptoManager.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/CryptoManager.kt index b99b2e5a..a060016d 100755 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/CryptoManager.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/CryptoManager.kt @@ -242,16 +242,16 @@ internal class CryptoManager @Inject constructor( * @param isInitialSync true if it starts from an initial sync */ fun start(isInitialSync: Boolean) { + if (isStarted.get() || isStarting.get()) { + return + } + isStarting.set(true) CoroutineScope(coroutineDispatchers.crypto).launch { internalStart(isInitialSync) } } private suspend fun internalStart(isInitialSync: Boolean) { - if (isStarted.get() || isStarting.get()) { - return - } - isStarting.set(true) // Open the store cryptoStore.open() uploadDeviceKeys() diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/sync/SyncResponseHandler.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/sync/SyncResponseHandler.kt index 593bb924..eab7b91e 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/sync/SyncResponseHandler.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/sync/SyncResponseHandler.kt @@ -33,6 +33,11 @@ internal class SyncResponseHandler @Inject constructor(private val roomSyncHandl fun handleResponse(syncResponse: SyncResponse, fromToken: String?, isCatchingUp: Boolean): Try { return Try { Timber.v("Start handling sync") + val isInitialSync = fromToken == null + if (!cryptoManager.isStarted()) { + Timber.v("Should start cryptoManager") + cryptoManager.start(isInitialSync) + } val measure = measureTimeMillis { // Handle the to device events before the room ones // to ensure to decrypt them properly @@ -55,11 +60,6 @@ internal class SyncResponseHandler @Inject constructor(private val roomSyncHandl Timber.v("On sync completed") cryptoSyncHandler.onSyncCompleted(syncResponse) } - val isInitialSync = fromToken == null - if (!cryptoManager.isStarted()) { - Timber.v("Should start cryptoManager") - cryptoManager.start(isInitialSync) - } Timber.v("Finish handling sync in $measure ms") syncResponse }