Merge pull request #291 from vector-im/feature/start_crypto_earlier

Start crypto manager before handling first sync events
This commit is contained in:
Benoit Marty 2019-07-03 18:05:44 +02:00 committed by GitHub
commit 9cdecced57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 9 deletions

View File

@ -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()

View File

@ -33,6 +33,11 @@ internal class SyncResponseHandler @Inject constructor(private val roomSyncHandl
fun handleResponse(syncResponse: SyncResponse, fromToken: String?, isCatchingUp: Boolean): Try<SyncResponse> {
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
}