diff --git a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt index c3395d1007..d4e52bdcf6 100644 --- a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt +++ b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt @@ -161,4 +161,12 @@ enum class FeatureFlags( defaultValue = { false }, isFinished = false, ), + AutomaticBackPagination( + key = "feature.automatic_back_pagination", + title = "Automatic back pagination of rooms", + description = "Allow the app to automatically back paginate in rooms to pre-fetch older messages in background." + + "\nRequires an app restart to take effect.", + defaultValue = { false }, + isFinished = false, + ), } 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 f83efd2736..6cbf122084 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 @@ -105,6 +105,11 @@ class RustMatrixClientFactory( suspend fun create(client: Client): RustMatrixClient { val (anonymizedAccessToken, anonymizedRefreshToken) = client.session().anonymizedTokens() + // Must be called before creating the sync service, timelines etc. + if (featureFlagService.isFeatureEnabled(FeatureFlags.AutomaticBackPagination)) { + client.enableAutomaticBackpagination() + } + client.setUtdDelegate(UtdTracker(analyticsService)) val syncService = client.syncService()