Bring back downstream "Update room previews once we have decryption keys"

This reverts commit 130fe7f887fe4851ec35305da23c5ffdbecad591.
Also update to some newer decryption logic, and disable the new upstream
logic, to avoid duplicate decryption attempts.

Change-Id: Ibcea8b825d94284dfcf2d305b5f57423366601e5
This commit is contained in:
SpiritCroc 2022-05-30 15:56:06 +02:00
parent 73feba72f5
commit 0393dd51c9
2 changed files with 22 additions and 1 deletions

View File

@ -17,6 +17,9 @@
package org.matrix.android.sdk.internal.crypto.actions
import androidx.annotation.WorkerThread
import com.zhuinden.monarchy.Monarchy
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import org.matrix.android.sdk.api.extensions.tryOrNull
import org.matrix.android.sdk.api.listeners.ProgressListener
import org.matrix.android.sdk.api.logger.LoggerTag
@ -27,6 +30,11 @@ import org.matrix.android.sdk.internal.crypto.OutgoingKeyRequestManager
import org.matrix.android.sdk.internal.crypto.RoomDecryptorProvider
import org.matrix.android.sdk.internal.crypto.algorithms.megolm.MXMegolmDecryption
import org.matrix.android.sdk.internal.crypto.store.IMXCryptoStore
import org.matrix.android.sdk.internal.database.model.RoomSummaryEntity
import org.matrix.android.sdk.internal.database.query.where
import org.matrix.android.sdk.internal.di.SessionDatabase
import org.matrix.android.sdk.internal.session.room.summary.RoomSummaryUpdater
import org.matrix.android.sdk.internal.util.awaitTransaction
import org.matrix.android.sdk.internal.util.time.Clock
import timber.log.Timber
import javax.inject.Inject
@ -35,6 +43,9 @@ private val loggerTag = LoggerTag("MegolmSessionDataImporter", LoggerTag.CRYPTO)
internal class MegolmSessionDataImporter @Inject constructor(private val olmDevice: MXOlmDevice,
private val roomDecryptorProvider: RoomDecryptorProvider,
@SessionDatabase private val monarchy: Monarchy,
private val roomSummaryUpdater: RoomSummaryUpdater,
private val cryptoCoroutineScope: CoroutineScope,
private val outgoingKeyRequestManager: OutgoingKeyRequestManager,
private val cryptoStore: IMXCryptoStore,
private val clock: Clock,
@ -117,6 +128,15 @@ internal class MegolmSessionDataImporter @Inject constructor(private val olmDevi
Timber.tag(loggerTag.value).v("## importMegolmSessionsData : sessions import " + (t1 - t0) + " ms (" + megolmSessionsData.size + " sessions)")
// SC: Retry decrypting room previews for the room list
cryptoCoroutineScope.launch {
monarchy.awaitTransaction { realm ->
RoomSummaryEntity.where(realm).findAll().forEach { entity ->
roomSummaryUpdater.refreshLatestPreviewContent(realm, entity.roomId)
}
}
}
return ImportRoomKeysResult(totalNumbersOfKeys, totalNumbersOfImportedKeys)
}
}

View File

@ -99,7 +99,8 @@ class HomeDetailViewModel @AssistedInject constructor(
private val refreshRoomSummariesOnCryptoSessionChange = object : NewSessionListener {
override fun onNewSession(roomId: String?, senderKey: String, sessionId: String) {
session.roomService().refreshJoinedRoomSummaryPreviews(roomId)
// SC: we're doing this directly in MegolmSessionDataImporter
//session.roomService().refreshJoinedRoomSummaryPreviews(roomId)
}
}