SDK 0.1.49: notification decryption is now fully handled by the Rust SDK. (#1231)

* Revert "Ensure the sync is started when receiving a Push, to ensure that the encryption loop is running."

This reverts commit 82f6f358a7.

* Integrate SDK from https://github.com/matrix-org/matrix-rust-sdk/pull/2505

* Enable retryDecryption() on the NotificationClient.

* SDK 0.1.49 - Encryption Sync is enabled by default now, and retryDecryption is the default too.

* Remove feature flag `UseEncryptionSync`

* Fix sample project build

* Exclude `DeveloperSettingsPresenter` from kover verification.

* Add changelog

---------

Co-authored-by: Jorge Martín <jorgem@element.io>
This commit is contained in:
Benoit Marty 2023-09-06 11:33:36 +02:00 committed by GitHub
parent 26573f4892
commit 128c4a7b09
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 35 additions and 104 deletions

View file

@ -26,7 +26,6 @@ import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.notification.NotificationContent
import io.element.android.libraries.matrix.api.notification.NotificationData
import io.element.android.libraries.matrix.api.room.RoomMembershipState
import io.element.android.libraries.matrix.api.sync.StartSyncReason
import io.element.android.libraries.matrix.api.timeline.item.event.AudioMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.EmoteMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.FileMessageType
@ -45,7 +44,6 @@ import io.element.android.libraries.push.impl.notifications.model.NotifiableMess
import io.element.android.libraries.ui.strings.CommonStrings
import io.element.android.services.toolbox.api.strings.StringProvider
import io.element.android.services.toolbox.api.systemclock.SystemClock
import kotlinx.coroutines.delay
import timber.log.Timber
import javax.inject.Inject
@ -67,14 +65,6 @@ class NotifiableEventResolver @Inject constructor(
// Restore session
val client = matrixClientProvider.getOrRestore(sessionId).getOrNull() ?: return null
val notificationService = client.notificationService()
// Restart the sync service to ensure that the crypto sync handle the toDevice Events.
client.syncService().startSync(StartSyncReason.Notification(roomId, eventId))
// Wait for toDevice Event to be processed
// FIXME This delay can be removed when the Rust SDK will handle internal retry to get
// clear notification content.
delay(300)
val notificationData = notificationService.getNotification(
userId = sessionId,
roomId = roomId,
@ -83,8 +73,6 @@ class NotifiableEventResolver @Inject constructor(
Timber.tag(loggerTag.value).e(it, "Unable to resolve event: $eventId.")
}.getOrNull()
client.syncService().stopSync(StartSyncReason.Notification(roomId, eventId))
// TODO this notificationData is not always valid at the moment, sometimes the Rust SDK can't fetch the matching event
return notificationData?.asNotifiableEvent(sessionId)
}