Make sure enforce_element_pro is taken into account in FOSS (#7631)

* Make sure `enforce_element_pro` is taken into account in FOSS

* Make sure we crate `RustTemporaryMatrixClient` instances with a proper `serverName` value
This commit is contained in:
Jorge Martin Espinosa
2026-09-03 10:05:40 +02:00
committed by GitHub
parent 3b2e416855
commit dcd0bc782f
4 changed files with 92 additions and 14 deletions
@@ -10,9 +10,11 @@ package io.element.android.libraries.matrix.impl
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesBinding
import io.element.android.libraries.core.extensions.runCatchingExceptions
import io.element.android.libraries.core.uri.ensureProtocol
import io.element.android.libraries.matrix.api.TemporaryMatrixClient
import io.element.android.libraries.matrix.api.TemporaryMatrixClientFactory
import io.element.android.libraries.matrix.impl.paths.SessionPathsFactory
import java.net.URL
@ContributesBinding(AppScope::class)
class RustTemporaryMatrixClientFactory(
@@ -21,6 +23,12 @@ class RustTemporaryMatrixClientFactory(
) : TemporaryMatrixClientFactory {
override suspend fun create(serverName: String): Result<TemporaryMatrixClient> {
return runCatchingExceptions {
// In case the 'serverName' is a full URL, we need to extract the host and port to pass to the client builder.
val parsedUrl = URL(serverName.ensureProtocol())
val domain = parsedUrl.host ?: error("Invalid server name: $serverName")
val port = parsedUrl.port
val formattedServerName = if (port != -1) "$domain:$port" else domain
val sessionPaths = sessionPathsFactory.create()
val client = rustMatrixClientFactory.getBaseClientBuilder(
sessionPaths = sessionPaths,
@@ -28,7 +36,7 @@ class RustTemporaryMatrixClientFactory(
slidingSyncType = ClientBuilderSlidingSync.Native,
isMessageSearchAvailable = false,
)
.serverName(serverName)
.serverName(formattedServerName)
.build()
RustTemporaryMatrixClient(client, sessionPaths)
}