diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/event/FilterAndStoreEventsTask.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/event/FilterAndStoreEventsTask.kt index aa836c8491..e6e169b9b4 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/event/FilterAndStoreEventsTask.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/event/FilterAndStoreEventsTask.kt @@ -18,6 +18,7 @@ package org.matrix.android.sdk.internal.session.room.event import com.zhuinden.monarchy.Monarchy import org.matrix.android.sdk.api.session.events.model.Event +import org.matrix.android.sdk.api.session.events.model.EventType import org.matrix.android.sdk.api.session.room.send.SendState import org.matrix.android.sdk.internal.crypto.EventDecryptor import org.matrix.android.sdk.internal.database.mapper.toEntity @@ -48,7 +49,9 @@ internal class DefaultFilterAndStoreEventsTask @Inject constructor( override suspend fun execute(params: FilterAndStoreEventsTask.Params) { val filteredEvents = params.events .map { decryptEventIfNeeded(it) } - .filter { params.filterPredicate(it) } + // we also filter in the encrypted events since it means there was decryption error for them + // and they may be decrypted later + .filter { params.filterPredicate(it) || it.getClearType() == EventType.ENCRYPTED } addMissingEventsInDB(params.roomId, filteredEvents) }