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 bcffe4daf0..00ab0fb57c 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 @@ -112,6 +112,17 @@ enum class FeatureFlags( defaultValue = { false }, isFinished = false, ), + EnableKeyShareOnInvite( + key = "feature.enableKeyShareOnInvite", + title = "Share encrypted history with new members", + description = "When inviting a user to an encrypted room that has history visibility set to \"shared\"," + + " share encrypted history with that user, and accept encrypted history when you are invited to such a room." + + "\nRequires an app restart to take effect." + + "\n\nWARNING: this feature is EXPERIMENTAL and not all security precautions are implemented." + + " Do not enable on production accounts.", + defaultValue = { false }, + isFinished = false, + ), Knock( key = "feature.knock", title = "Ask to join", 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 bc8e337ada..8261969918 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 @@ -127,6 +127,7 @@ class RustMatrixClientFactory @Inject constructor( TrustRequirement.UNTRUSTED } ) + .enableShareHistoryOnInvite(featureFlagService.isFeatureEnabled(FeatureFlags.EnableKeyShareOnInvite)) .run { // Apply sliding sync version settings when (slidingSyncType) { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt index 9f64487448..68e9946cb4 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt @@ -41,6 +41,7 @@ class FakeFfiClientBuilder : ClientBuilder(NoPointer) { override fun slidingSyncVersionBuilder(versionBuilder: SlidingSyncVersionBuilder) = this override fun userAgent(userAgent: String) = this override fun username(username: String) = this + override fun enableShareHistoryOnInvite(enableShareHistoryOnInvite: Boolean): ClientBuilder = this override suspend fun buildWithQrCode(qrCodeData: QrCodeData, oidcConfiguration: OidcConfiguration, progressListener: QrLoginProgressListener): Client { return FakeFfiClient()