From 51b7a0aeae8d28b5d7eef889dbad8546aa97e228 Mon Sep 17 00:00:00 2001 From: Valere Date: Mon, 29 Jun 2020 11:21:10 +0200 Subject: [PATCH] Fix / device change detection broken --- .../matrix/android/internal/crypto/DefaultCryptoService.kt | 2 ++ .../matrix/android/internal/crypto/DeviceListManager.kt | 2 ++ .../android/internal/session/sync/SyncResponseHandler.kt | 4 ++++ 3 files changed, 8 insertions(+) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/DefaultCryptoService.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/DefaultCryptoService.kt index 9621ce203b..012a1d9c12 100755 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/DefaultCryptoService.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/DefaultCryptoService.kt @@ -360,6 +360,8 @@ internal class DefaultCryptoService @Inject constructor( // be called for all e2e rooms during the processing of the sync, // at which point we'll start tracking all the users of that room. deviceListManager.invalidateAllDeviceLists() + // always track my devices? + deviceListManager.startTrackingDeviceList(listOf(userId)) deviceListManager.refreshOutdatedDeviceLists() } catch (failure: Throwable) { Timber.e(failure, "## CRYPTO onSyncWillProcess ") diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/DeviceListManager.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/DeviceListManager.kt index 680539d057..722a751ecd 100755 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/DeviceListManager.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/DeviceListManager.kt @@ -156,6 +156,7 @@ internal class DeviceListManager @Inject constructor(private val cryptoStore: IM * @param left the user ids list which left a room */ fun handleDeviceListsChanges(changed: Collection, left: Collection) { + Timber.v("## CRYPTO: handleDeviceListsChanges changed:$changed / left:$left") var isUpdated = false val deviceTrackingStatuses = cryptoStore.getDeviceTrackingStatuses().toMutableMap() @@ -483,6 +484,7 @@ internal class DeviceListManager @Inject constructor(private val cryptoStore: IM * This method must be called on getEncryptingThreadHandler() thread. */ suspend fun refreshOutdatedDeviceLists() { + Timber.v("## CRYPTO | refreshOutdatedDeviceLists()") val deviceTrackingStatuses = cryptoStore.getDeviceTrackingStatuses().toMutableMap() val users = deviceTrackingStatuses.keys.filterTo(mutableListOf()) { userId -> 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 2fbde5b15a..5e8ef5a608 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 @@ -49,6 +49,10 @@ internal class SyncResponseHandler @Inject constructor(@SessionDatabase private val reporter = initialSyncProgressService.takeIf { isInitialSync } measureTimeMillis { + if (!cryptoService.isStarted()) { + Timber.v("Should start cryptoService") + cryptoService.start() + } cryptoService.onSyncWillProcess(isInitialSync) }.also { Timber.v("Finish handling start cryptoService in $it ms")