diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 63d858d578..397b8185f8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -169,7 +169,7 @@ jsoup = "org.jsoup:jsoup:1.20.1" appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } molecule-runtime = "app.cash.molecule:molecule-runtime:2.1.0" timber = "com.jakewharton.timber:timber:5.0.1" -matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.5.8" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.5.13" matrix_richtexteditor = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" } matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", version.ref = "wysiwyg" } sqldelight-driver-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomInfo.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomInfo.kt index 1c4957fd74..a12d4d7098 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomInfo.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomInfo.kt @@ -32,7 +32,7 @@ data class RoomInfo( val isEncrypted: Boolean?, val joinRule: JoinRule?, val isSpace: Boolean, - val isTombstoned: Boolean, + val tombstone: RoomTombstone?, val isFavorite: Boolean, val canonicalAlias: RoomAlias?, val alternativeAliases: ImmutableList, @@ -78,3 +78,8 @@ data class RoomInfo( val aliases: List get() = listOfNotNull(canonicalAlias) + alternativeAliases } + +data class RoomTombstone( + val body: String, + val replacementRoomId: RoomId, +) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt index b302784528..dae048a235 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt @@ -110,7 +110,6 @@ class RustMatrixClientFactory @Inject constructor( .addRootCertificates(userCertificatesProvider.provides()) .autoEnableBackups(true) .autoEnableCrossSigning(true) - .useEventCachePersistentStorage(featureFlagService.isFeatureEnabled(FeatureFlags.EventCache)) .roomKeyRecipientStrategy( strategy = if (featureFlagService.isFeatureEnabled(FeatureFlags.OnlySignedDeviceIsolationMode)) { CollectStrategy.IDENTITY_BASED_STRATEGY diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt index b03e0c9af4..5e0c3058c9 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt @@ -194,6 +194,7 @@ class RustMatrixAuthenticationService @Inject constructor( val oAuthAuthorizationData = client.urlForOidc( oidcConfiguration = oidcConfigurationProvider.get(), prompt = prompt.toRustPrompt(), + loginHint = null, ) val url = oAuthAuthorizationData.loginUrl() pendingOAuthAuthorizationData = oAuthAuthorizationData diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoMapper.kt index 9ee61da9fe..e57e94087e 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoMapper.kt @@ -14,6 +14,7 @@ import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.RoomInfo import io.element.android.libraries.matrix.api.room.RoomNotificationMode +import io.element.android.libraries.matrix.api.room.RoomTombstone import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.impl.room.history.map import io.element.android.libraries.matrix.impl.room.join.map @@ -46,7 +47,9 @@ class RoomInfoMapper { }, joinRule = it.joinRule?.map(), isSpace = it.isSpace, - isTombstoned = it.isTombstoned, + tombstone = it.tombstone?.let { + RoomTombstone(it.body, RoomId(it.replacementRoomId)) + }, isFavorite = it.isFavourite, canonicalAlias = it.canonicalAlias?.let(::RoomAlias), alternativeAliases = it.alternativeAliases.map(::RoomAlias).toImmutableList(), diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/RoomInfo.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/RoomInfo.kt index 15445183c0..7590e3412a 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/RoomInfo.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/RoomInfo.kt @@ -17,6 +17,7 @@ import org.matrix.rustcomponents.sdk.RoomHistoryVisibility import org.matrix.rustcomponents.sdk.RoomInfo import org.matrix.rustcomponents.sdk.RoomMember import org.matrix.rustcomponents.sdk.RoomNotificationMode +import org.matrix.rustcomponents.sdk.RoomTombstoneInfo import uniffi.matrix_sdk_base.EncryptionState fun aRustRoomInfo( @@ -29,7 +30,7 @@ fun aRustRoomInfo( isDirect: Boolean = false, isPublic: Boolean = false, isSpace: Boolean = false, - isTombstoned: Boolean = false, + tombstone: RoomTombstoneInfo? = null, isFavourite: Boolean = false, canonicalAlias: String? = null, alternativeAliases: List = listOf(), @@ -63,7 +64,7 @@ fun aRustRoomInfo( isDirect = isDirect, isPublic = isPublic, isSpace = isSpace, - isTombstoned = isTombstoned, + tombstone = tombstone, isFavourite = isFavourite, canonicalAlias = canonicalAlias, alternativeAliases = alternativeAliases, diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustClientBuilder.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustClientBuilder.kt index 8852734a71..2d72b8a4f5 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustClientBuilder.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustClientBuilder.kt @@ -41,7 +41,6 @@ class FakeRustClientBuilder : ClientBuilder(NoPointer) { override fun slidingSyncVersionBuilder(versionBuilder: SlidingSyncVersionBuilder) = this override fun userAgent(userAgent: String) = this override fun username(username: String) = this - override fun useEventCachePersistentStorage(value: Boolean) = this override suspend fun buildWithQrCode(qrCodeData: QrCodeData, oidcConfiguration: OidcConfiguration, progressListener: QrLoginProgressListener): Client { return FakeRustClient() diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoMapperTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoMapperTest.kt index c6adaa46d1..799d40987b 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoMapperTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoMapperTest.kt @@ -54,7 +54,7 @@ class RoomInfoMapperTest { isPublic = false, isSpace = false, joinRule = RustJoinRule.Invite, - isTombstoned = false, + tombstone = null, isFavourite = false, canonicalAlias = A_ROOM_ALIAS.value, alternativeAliases = listOf(A_ROOM_ALIAS.value), @@ -90,7 +90,7 @@ class RoomInfoMapperTest { isDirect = true, isEncrypted = true, isSpace = false, - isTombstoned = false, + tombstone = null, isFavorite = false, joinRule = JoinRule.Invite, canonicalAlias = A_ROOM_ALIAS, @@ -139,7 +139,7 @@ class RoomInfoMapperTest { isPublic = true, joinRule = null, isSpace = false, - isTombstoned = false, + tombstone = null, isFavourite = true, canonicalAlias = null, alternativeAliases = emptyList(), @@ -175,7 +175,7 @@ class RoomInfoMapperTest { isDirect = false, joinRule = null, isSpace = false, - isTombstoned = false, + tombstone = null, isFavorite = true, canonicalAlias = null, alternativeAliases = emptyList().toPersistentList(), diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomInfoFixture.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomInfoFixture.kt index 130d00ab24..8cc7b2b6c9 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomInfoFixture.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomInfoFixture.kt @@ -15,6 +15,7 @@ import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.RoomInfo import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.RoomNotificationMode +import io.element.android.libraries.matrix.api.room.RoomTombstone import io.element.android.libraries.matrix.api.room.history.RoomHistoryVisibility import io.element.android.libraries.matrix.api.room.join.JoinRule import io.element.android.libraries.matrix.api.user.MatrixUser @@ -38,7 +39,7 @@ fun aRoomInfo( isEncrypted: Boolean = false, joinRule: JoinRule? = JoinRule.Public, isSpace: Boolean = false, - isTombstoned: Boolean = false, + tombstone: RoomTombstone? = null, isFavorite: Boolean = false, canonicalAlias: RoomAlias? = null, alternativeAliases: List = emptyList(), @@ -72,7 +73,7 @@ fun aRoomInfo( isEncrypted = isEncrypted, joinRule = joinRule, isSpace = isSpace, - isTombstoned = isTombstoned, + tombstone = tombstone, isFavorite = isFavorite, canonicalAlias = canonicalAlias, alternativeAliases = alternativeAliases.toImmutableList(), diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomSummaryFixture.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomSummaryFixture.kt index 26e0e3afaf..f5f29d6a8a 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomSummaryFixture.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomSummaryFixture.kt @@ -15,6 +15,7 @@ import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.RoomInfo import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.RoomNotificationMode +import io.element.android.libraries.matrix.api.room.RoomTombstone import io.element.android.libraries.matrix.api.room.history.RoomHistoryVisibility import io.element.android.libraries.matrix.api.room.join.JoinRule import io.element.android.libraries.matrix.api.room.message.RoomMessage @@ -51,7 +52,7 @@ fun aRoomSummary( isEncrypted: Boolean = false, joinRule: JoinRule? = JoinRule.Public, isSpace: Boolean = false, - isTombstoned: Boolean = false, + tombstone: RoomTombstone? = null, isFavorite: Boolean = false, canonicalAlias: RoomAlias? = null, alternativeAliases: List = emptyList(), @@ -87,7 +88,7 @@ fun aRoomSummary( isEncrypted = isEncrypted, joinRule = joinRule, isSpace = isSpace, - isTombstoned = isTombstoned, + tombstone = tombstone, isFavorite = isFavorite, canonicalAlias = canonicalAlias, alternativeAliases = alternativeAliases.toPersistentList(),