mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-04 10:32:34 +00:00
Rename GetUrlResolver to UrlContentFetcher and TemporaryMatrixClientFactory.createTemporaryMatrixClient to just create
This commit is contained in:
committed by
Jorge Martin Espinosa
parent
dbc28df3eb
commit
e371b46c68
+2
-2
@@ -10,7 +10,7 @@ package io.element.android.features.enterprise.api
|
|||||||
|
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import io.element.android.compound.colors.SemanticColorsLightDark
|
import io.element.android.compound.colors.SemanticColorsLightDark
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.wellknown.api.ElementWellKnown
|
import io.element.android.libraries.wellknown.api.ElementWellKnown
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
@@ -18,7 +18,7 @@ import kotlinx.coroutines.flow.Flow
|
|||||||
interface EnterpriseService {
|
interface EnterpriseService {
|
||||||
val isEnterpriseBuild: Boolean
|
val isEnterpriseBuild: Boolean
|
||||||
suspend fun isEnterpriseUser(sessionId: SessionId): Boolean
|
suspend fun isEnterpriseUser(sessionId: SessionId): Boolean
|
||||||
suspend fun tweakMasUrl(url: String, homeserver: String, getUrlResolver: GetUrlResolver): String
|
suspend fun tweakMasUrl(url: String, homeserver: String, urlContentFetcher: UrlContentFetcher): String
|
||||||
fun defaultHomeserverList(): List<String>
|
fun defaultHomeserverList(): List<String>
|
||||||
suspend fun isAllowedToConnectToHomeserver(homeserverUrl: String): Boolean
|
suspend fun isAllowedToConnectToHomeserver(homeserverUrl: String): Boolean
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
package io.element.android.features.enterprise.api.remoteconfig
|
package io.element.android.features.enterprise.api.remoteconfig
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.wellknown.api.WellknownRetrieverResult
|
import io.element.android.libraries.wellknown.api.WellknownRetrieverResult
|
||||||
|
|
||||||
@@ -18,6 +18,6 @@ interface RemoteEnterpriseConfigProvider {
|
|||||||
suspend fun get(sessionId: SessionId): WellknownRetrieverResult<RemoteEnterpriseConfig>
|
suspend fun get(sessionId: SessionId): WellknownRetrieverResult<RemoteEnterpriseConfig>
|
||||||
|
|
||||||
interface Factory {
|
interface Factory {
|
||||||
fun create(getUrlResolver: GetUrlResolver): RemoteEnterpriseConfigProvider
|
fun create(urlContentFetcher: UrlContentFetcher): RemoteEnterpriseConfigProvider
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -14,7 +14,7 @@ import dev.zacsweers.metro.ContributesBinding
|
|||||||
import io.element.android.compound.colors.SemanticColorsLightDark
|
import io.element.android.compound.colors.SemanticColorsLightDark
|
||||||
import io.element.android.features.enterprise.api.BugReportUrl
|
import io.element.android.features.enterprise.api.BugReportUrl
|
||||||
import io.element.android.features.enterprise.api.EnterpriseService
|
import io.element.android.features.enterprise.api.EnterpriseService
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.wellknown.api.ElementWellKnown
|
import io.element.android.libraries.wellknown.api.ElementWellKnown
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
@@ -25,7 +25,7 @@ class DefaultEnterpriseService : EnterpriseService {
|
|||||||
override val isEnterpriseBuild = false
|
override val isEnterpriseBuild = false
|
||||||
|
|
||||||
override suspend fun isEnterpriseUser(sessionId: SessionId) = false
|
override suspend fun isEnterpriseUser(sessionId: SessionId) = false
|
||||||
override suspend fun tweakMasUrl(url: String, homeserver: String, getUrlResolver: GetUrlResolver) = url
|
override suspend fun tweakMasUrl(url: String, homeserver: String, urlContentFetcher: UrlContentFetcher) = url
|
||||||
override fun defaultHomeserverList(): List<String> = emptyList()
|
override fun defaultHomeserverList(): List<String> = emptyList()
|
||||||
override suspend fun isAllowedToConnectToHomeserver(homeserverUrl: String) = true
|
override suspend fun isAllowedToConnectToHomeserver(homeserverUrl: String) = true
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ import dev.zacsweers.metro.AppScope
|
|||||||
import dev.zacsweers.metro.ContributesBinding
|
import dev.zacsweers.metro.ContributesBinding
|
||||||
import io.element.android.features.enterprise.api.remoteconfig.RemoteEnterpriseConfig
|
import io.element.android.features.enterprise.api.remoteconfig.RemoteEnterpriseConfig
|
||||||
import io.element.android.features.enterprise.api.remoteconfig.RemoteEnterpriseConfigProvider
|
import io.element.android.features.enterprise.api.remoteconfig.RemoteEnterpriseConfigProvider
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.wellknown.api.WellknownRetrieverResult
|
import io.element.android.libraries.wellknown.api.WellknownRetrieverResult
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ class DefaultRemoteEnterpriseConfigProvider : RemoteEnterpriseConfigProvider {
|
|||||||
|
|
||||||
@ContributesBinding(AppScope::class)
|
@ContributesBinding(AppScope::class)
|
||||||
class Factory : RemoteEnterpriseConfigProvider.Factory {
|
class Factory : RemoteEnterpriseConfigProvider.Factory {
|
||||||
override fun create(getUrlResolver: GetUrlResolver): RemoteEnterpriseConfigProvider {
|
override fun create(urlContentFetcher: UrlContentFetcher): RemoteEnterpriseConfigProvider {
|
||||||
return DefaultRemoteEnterpriseConfigProvider()
|
return DefaultRemoteEnterpriseConfigProvider()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -9,7 +9,7 @@ package io.element.android.features.enterprise.impl.scanner
|
|||||||
|
|
||||||
import dev.zacsweers.metro.AppScope
|
import dev.zacsweers.metro.AppScope
|
||||||
import dev.zacsweers.metro.ContributesBinding
|
import dev.zacsweers.metro.ContributesBinding
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.matrix.api.scanner.ContentScannerUrlProvider
|
import io.element.android.libraries.matrix.api.scanner.ContentScannerUrlProvider
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ class DefaultContentScannerUrlProvider : ContentScannerUrlProvider {
|
|||||||
|
|
||||||
@ContributesBinding(AppScope::class)
|
@ContributesBinding(AppScope::class)
|
||||||
class Factory : ContentScannerUrlProvider.Factory {
|
class Factory : ContentScannerUrlProvider.Factory {
|
||||||
override fun create(getUrlResolver: GetUrlResolver): ContentScannerUrlProvider {
|
override fun create(urlContentFetcher: UrlContentFetcher): ContentScannerUrlProvider {
|
||||||
return DefaultContentScannerUrlProvider()
|
return DefaultContentScannerUrlProvider()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -12,7 +12,7 @@ import androidx.compose.ui.graphics.Color
|
|||||||
import io.element.android.compound.colors.SemanticColorsLightDark
|
import io.element.android.compound.colors.SemanticColorsLightDark
|
||||||
import io.element.android.features.enterprise.api.BugReportUrl
|
import io.element.android.features.enterprise.api.BugReportUrl
|
||||||
import io.element.android.features.enterprise.api.EnterpriseService
|
import io.element.android.features.enterprise.api.EnterpriseService
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.wellknown.api.ElementWellKnown
|
import io.element.android.libraries.wellknown.api.ElementWellKnown
|
||||||
import io.element.android.tests.testutils.lambda.lambdaError
|
import io.element.android.tests.testutils.lambda.lambdaError
|
||||||
@@ -32,7 +32,7 @@ class FakeEnterpriseService(
|
|||||||
private val firebasePushGatewayResult: () -> String? = { lambdaError() },
|
private val firebasePushGatewayResult: () -> String? = { lambdaError() },
|
||||||
private val unifiedPushDefaultPushGatewayResult: () -> String? = { lambdaError() },
|
private val unifiedPushDefaultPushGatewayResult: () -> String? = { lambdaError() },
|
||||||
private val getNoisyNotificationChannelIdResult: (SessionId?) -> String? = { lambdaError() },
|
private val getNoisyNotificationChannelIdResult: (SessionId?) -> String? = { lambdaError() },
|
||||||
private val tweakMasUrlResult: (String, String, GetUrlResolver) -> String = { _, _, _ -> lambdaError() },
|
private val tweakMasUrlResult: (String, String, UrlContentFetcher) -> String = { _, _, _ -> lambdaError() },
|
||||||
private val overrideWellKnownResult: () -> ElementWellKnown? = { lambdaError() },
|
private val overrideWellKnownResult: () -> ElementWellKnown? = { lambdaError() },
|
||||||
private val essConfigEndpointUrlResult: (String) -> String = { lambdaError() },
|
private val essConfigEndpointUrlResult: (String) -> String = { lambdaError() },
|
||||||
) : EnterpriseService {
|
) : EnterpriseService {
|
||||||
@@ -43,8 +43,8 @@ class FakeEnterpriseService(
|
|||||||
isEnterpriseUserResult(sessionId)
|
isEnterpriseUserResult(sessionId)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun tweakMasUrl(url: String, homeserver: String, getUrlResolver: GetUrlResolver): String = simulateLongTask {
|
override suspend fun tweakMasUrl(url: String, homeserver: String, urlContentFetcher: UrlContentFetcher): String = simulateLongTask {
|
||||||
tweakMasUrlResult(url, homeserver, getUrlResolver)
|
tweakMasUrlResult(url, homeserver, urlContentFetcher)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun defaultHomeserverList(): List<String> {
|
override fun defaultHomeserverList(): List<String> {
|
||||||
|
|||||||
+2
-2
@@ -8,10 +8,10 @@
|
|||||||
package io.element.android.features.enterprise.test.remoteconfig
|
package io.element.android.features.enterprise.test.remoteconfig
|
||||||
|
|
||||||
import io.element.android.features.enterprise.api.remoteconfig.RemoteEnterpriseConfigProvider
|
import io.element.android.features.enterprise.api.remoteconfig.RemoteEnterpriseConfigProvider
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
|
|
||||||
class FakeRemoteEnterpriseConfigProviderFactory(
|
class FakeRemoteEnterpriseConfigProviderFactory(
|
||||||
private val remoteEnterpriseConfigProvider: RemoteEnterpriseConfigProvider = FakeRemoteEnterpriseConfigProvider(),
|
private val remoteEnterpriseConfigProvider: RemoteEnterpriseConfigProvider = FakeRemoteEnterpriseConfigProvider(),
|
||||||
) : RemoteEnterpriseConfigProvider.Factory {
|
) : RemoteEnterpriseConfigProvider.Factory {
|
||||||
override fun create(getUrlResolver: GetUrlResolver): RemoteEnterpriseConfigProvider = remoteEnterpriseConfigProvider
|
override fun create(urlContentFetcher: UrlContentFetcher): RemoteEnterpriseConfigProvider = remoteEnterpriseConfigProvider
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -40,7 +40,7 @@ class DefaultAccountProviderAccessControl(
|
|||||||
) {
|
) {
|
||||||
if (enterpriseService.isEnterpriseBuild.not()) {
|
if (enterpriseService.isEnterpriseBuild.not()) {
|
||||||
// Ensure that Element Pro is not required for this account provider
|
// Ensure that Element Pro is not required for this account provider
|
||||||
val temporaryMatrixClient = temporaryMatrixClientFactory.createTemporaryMatrixClient(accountProviderUrl).getOrThrow()
|
val temporaryMatrixClient = temporaryMatrixClientFactory.create(accountProviderUrl).getOrThrow()
|
||||||
temporaryMatrixClient.use {
|
temporaryMatrixClient.use {
|
||||||
val wellknownRetriever = wellknownRetrieverFactory.create(temporaryMatrixClient)
|
val wellknownRetriever = wellknownRetrieverFactory.create(temporaryMatrixClient)
|
||||||
val wellKnown = wellknownRetriever.getElementWellKnown(
|
val wellKnown = wellknownRetriever.getElementWellKnown(
|
||||||
|
|||||||
+1
-1
@@ -32,7 +32,7 @@ class DefaultWebClientUrlForAuthenticationRetriever(
|
|||||||
Timber.w("Temporary account creation flow is only supported on matrix.org")
|
Timber.w("Temporary account creation flow is only supported on matrix.org")
|
||||||
throw AccountCreationNotSupported()
|
throw AccountCreationNotSupported()
|
||||||
}
|
}
|
||||||
val temporaryMatrixClient = temporaryMatrixClientFactory.createTemporaryMatrixClient(homeServerUrl).getOrThrow()
|
val temporaryMatrixClient = temporaryMatrixClientFactory.create(homeServerUrl).getOrThrow()
|
||||||
return temporaryMatrixClient.use {
|
return temporaryMatrixClient.use {
|
||||||
val wellknownRetriever = wellknownRetrieverFactory.create(temporaryMatrixClient)
|
val wellknownRetriever = wellknownRetrieverFactory.create(temporaryMatrixClient)
|
||||||
val wellknown = wellknownRetriever.getElementWellKnown(
|
val wellknown = wellknownRetriever.getElementWellKnown(
|
||||||
|
|||||||
+1
-1
@@ -54,7 +54,7 @@ import kotlinx.coroutines.flow.Flow
|
|||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
import java.util.Optional
|
import java.util.Optional
|
||||||
|
|
||||||
interface MatrixClient : GetUrlResolver {
|
interface MatrixClient : UrlContentFetcher {
|
||||||
val sessionId: SessionId
|
val sessionId: SessionId
|
||||||
val deviceId: DeviceId
|
val deviceId: DeviceId
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -15,4 +15,4 @@ import java.lang.AutoCloseable
|
|||||||
* Note: this client implements an [AutoCloseable] interface, so using [AutoCloseable.close] or [AutoCloseable.use] will clean up any resources associated
|
* Note: this client implements an [AutoCloseable] interface, so using [AutoCloseable.close] or [AutoCloseable.use] will clean up any resources associated
|
||||||
* with it, such as temporary files.
|
* with it, such as temporary files.
|
||||||
*/
|
*/
|
||||||
interface TemporaryMatrixClient : GetUrlResolver, AutoCloseable
|
interface TemporaryMatrixClient : UrlContentFetcher, AutoCloseable
|
||||||
|
|||||||
+1
-1
@@ -11,5 +11,5 @@ package io.element.android.libraries.matrix.api
|
|||||||
* Factory to create a temporary [TemporaryMatrixClient] for a given home server URL.
|
* Factory to create a temporary [TemporaryMatrixClient] for a given home server URL.
|
||||||
*/
|
*/
|
||||||
interface TemporaryMatrixClientFactory {
|
interface TemporaryMatrixClientFactory {
|
||||||
suspend fun createTemporaryMatrixClient(homeServerUrl: String): Result<TemporaryMatrixClient>
|
suspend fun create(homeServerUrl: String): Result<TemporaryMatrixClient>
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-1
@@ -7,7 +7,10 @@
|
|||||||
|
|
||||||
package io.element.android.libraries.matrix.api
|
package io.element.android.libraries.matrix.api
|
||||||
|
|
||||||
fun interface GetUrlResolver {
|
/**
|
||||||
|
* An interface to fetch content from a URL using a simple GET request.
|
||||||
|
*/
|
||||||
|
fun interface UrlContentFetcher {
|
||||||
/**
|
/**
|
||||||
* Execute generic GET requests through the SDKs internal HTTP client.
|
* Execute generic GET requests through the SDKs internal HTTP client.
|
||||||
*/
|
*/
|
||||||
+2
-2
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
package io.element.android.libraries.matrix.api.scanner
|
package io.element.android.libraries.matrix.api.scanner
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -20,6 +20,6 @@ fun interface ContentScannerUrlProvider {
|
|||||||
suspend fun getContentScannerUrl(sessionId: SessionId): Result<String?>
|
suspend fun getContentScannerUrl(sessionId: SessionId): Result<String?>
|
||||||
|
|
||||||
fun interface Factory {
|
fun interface Factory {
|
||||||
fun create(getUrlResolver: GetUrlResolver): ContentScannerUrlProvider
|
fun create(urlContentFetcher: UrlContentFetcher): ContentScannerUrlProvider
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -10,8 +10,8 @@ package io.element.android.libraries.matrix.impl
|
|||||||
import dev.zacsweers.metro.AppScope
|
import dev.zacsweers.metro.AppScope
|
||||||
import dev.zacsweers.metro.ContributesBinding
|
import dev.zacsweers.metro.ContributesBinding
|
||||||
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
||||||
import io.element.android.libraries.matrix.api.TemporaryMatrixClientFactory
|
|
||||||
import io.element.android.libraries.matrix.api.TemporaryMatrixClient
|
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 io.element.android.libraries.matrix.impl.paths.SessionPathsFactory
|
||||||
|
|
||||||
@ContributesBinding(AppScope::class)
|
@ContributesBinding(AppScope::class)
|
||||||
@@ -19,7 +19,7 @@ class RustTemporaryMatrixClientFactory(
|
|||||||
private val sessionPathsFactory: SessionPathsFactory,
|
private val sessionPathsFactory: SessionPathsFactory,
|
||||||
private val rustMatrixClientFactory: RustMatrixClientFactory,
|
private val rustMatrixClientFactory: RustMatrixClientFactory,
|
||||||
) : TemporaryMatrixClientFactory {
|
) : TemporaryMatrixClientFactory {
|
||||||
override suspend fun createTemporaryMatrixClient(homeServerUrl: String): Result<TemporaryMatrixClient> {
|
override suspend fun create(homeServerUrl: String): Result<TemporaryMatrixClient> {
|
||||||
return runCatchingExceptions {
|
return runCatchingExceptions {
|
||||||
val sessionPaths = sessionPathsFactory.create()
|
val sessionPaths = sessionPathsFactory.create()
|
||||||
val client = rustMatrixClientFactory.getBaseClientBuilder(
|
val client = rustMatrixClientFactory.getBaseClientBuilder(
|
||||||
|
|||||||
+1
-1
@@ -279,7 +279,7 @@ class RustMatrixAuthenticationService(
|
|||||||
enterpriseService.tweakMasUrl(
|
enterpriseService.tweakMasUrl(
|
||||||
url = it,
|
url = it,
|
||||||
homeserver = client.server() ?: client.homeserver(),
|
homeserver = client.server() ?: client.homeserver(),
|
||||||
getUrlResolver = getUrlResolver,
|
urlContentFetcher = getUrlResolver,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
pendingOAuthAuthorizationData = oAuthAuthorizationData
|
pendingOAuthAuthorizationData = oAuthAuthorizationData
|
||||||
|
|||||||
+3
-3
@@ -13,9 +13,9 @@ import dev.zacsweers.metro.ContributesTo
|
|||||||
import dev.zacsweers.metro.Provides
|
import dev.zacsweers.metro.Provides
|
||||||
import io.element.android.libraries.di.SessionScope
|
import io.element.android.libraries.di.SessionScope
|
||||||
import io.element.android.libraries.di.annotations.SessionCoroutineScope
|
import io.element.android.libraries.di.annotations.SessionCoroutineScope
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
|
||||||
import io.element.android.libraries.matrix.api.HomeserverCapabilitiesProvider
|
import io.element.android.libraries.matrix.api.HomeserverCapabilitiesProvider
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
import io.element.android.libraries.matrix.api.core.DeviceId
|
import io.element.android.libraries.matrix.api.core.DeviceId
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.matrix.api.encryption.EncryptionService
|
import io.element.android.libraries.matrix.api.encryption.EncryptionService
|
||||||
@@ -32,7 +32,7 @@ import io.element.android.libraries.matrix.api.verification.SessionVerificationS
|
|||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
|
||||||
@BindingContainer
|
@BindingContainer
|
||||||
@ContributesTo(SessionScope::class, replaces = [GetUrlResolver::class])
|
@ContributesTo(SessionScope::class)
|
||||||
object SessionMatrixModule {
|
object SessionMatrixModule {
|
||||||
@Provides
|
@Provides
|
||||||
fun providesSessionId(matrixClient: MatrixClient): SessionId {
|
fun providesSessionId(matrixClient: MatrixClient): SessionId {
|
||||||
@@ -111,7 +111,7 @@ object SessionMatrixModule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
fun providesGetUrlResolverClient(matrixClient: MatrixClient): GetUrlResolver {
|
fun providesGetUrlResolverClient(matrixClient: MatrixClient): UrlContentFetcher {
|
||||||
return matrixClient
|
return matrixClient
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -7,11 +7,11 @@
|
|||||||
|
|
||||||
package io.element.android.libraries.matrix.test
|
package io.element.android.libraries.matrix.test
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.TemporaryMatrixClientFactory
|
|
||||||
import io.element.android.libraries.matrix.api.TemporaryMatrixClient
|
import io.element.android.libraries.matrix.api.TemporaryMatrixClient
|
||||||
|
import io.element.android.libraries.matrix.api.TemporaryMatrixClientFactory
|
||||||
|
|
||||||
class FakeTemporaryMatrixClientFactory(
|
class FakeTemporaryMatrixClientFactory(
|
||||||
private val createResult: (String) -> Result<TemporaryMatrixClient> = { Result.success(FakeTemporaryMatrixClient()) },
|
private val createResult: (String) -> Result<TemporaryMatrixClient> = { Result.success(FakeTemporaryMatrixClient()) },
|
||||||
) : TemporaryMatrixClientFactory {
|
) : TemporaryMatrixClientFactory {
|
||||||
override suspend fun createTemporaryMatrixClient(homeServerUrl: String): Result<TemporaryMatrixClient> = createResult(homeServerUrl)
|
override suspend fun create(homeServerUrl: String): Result<TemporaryMatrixClient> = createResult(homeServerUrl)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
package io.element.android.libraries.wellknown.api
|
package io.element.android.libraries.wellknown.api
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
|
|
||||||
interface WellknownRetriever {
|
interface WellknownRetriever {
|
||||||
suspend fun getElementWellKnown(
|
suspend fun getElementWellKnown(
|
||||||
@@ -17,6 +17,6 @@ interface WellknownRetriever {
|
|||||||
): WellknownRetrieverResult<ElementWellKnown>
|
): WellknownRetrieverResult<ElementWellKnown>
|
||||||
|
|
||||||
interface Factory {
|
interface Factory {
|
||||||
fun create(getUrlResolver: GetUrlResolver): WellknownRetriever
|
fun create(urlContentFetcher: UrlContentFetcher): WellknownRetriever
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -19,12 +19,12 @@ import io.element.android.libraries.core.extensions.mapCatchingExceptions
|
|||||||
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
||||||
import io.element.android.libraries.core.uri.ensureProtocol
|
import io.element.android.libraries.core.uri.ensureProtocol
|
||||||
import io.element.android.libraries.di.annotations.AppCoroutineScope
|
import io.element.android.libraries.di.annotations.AppCoroutineScope
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
import io.element.android.libraries.matrix.api.exception.ClientException
|
import io.element.android.libraries.matrix.api.exception.ClientException
|
||||||
import io.element.android.libraries.wellknown.api.ElementWellKnown
|
import io.element.android.libraries.wellknown.api.ElementWellKnown
|
||||||
import io.element.android.libraries.wellknown.api.ElementWellKnownParser
|
import io.element.android.libraries.wellknown.api.ElementWellKnownParser
|
||||||
import io.element.android.libraries.wellknown.api.EnterpriseRemoteConfigSource
|
|
||||||
import io.element.android.libraries.wellknown.api.ElementWellknownStore
|
import io.element.android.libraries.wellknown.api.ElementWellknownStore
|
||||||
|
import io.element.android.libraries.wellknown.api.EnterpriseRemoteConfigSource
|
||||||
import io.element.android.libraries.wellknown.api.WellknownRetriever
|
import io.element.android.libraries.wellknown.api.WellknownRetriever
|
||||||
import io.element.android.libraries.wellknown.api.WellknownRetrieverResult
|
import io.element.android.libraries.wellknown.api.WellknownRetrieverResult
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@@ -37,13 +37,13 @@ class DefaultWellknownRetriever(
|
|||||||
private val elementWellknownStoreFactory: ElementWellknownStore.Factory,
|
private val elementWellknownStoreFactory: ElementWellknownStore.Factory,
|
||||||
private val enterpriseService: EnterpriseService,
|
private val enterpriseService: EnterpriseService,
|
||||||
private val elementWellKnownParser: ElementWellKnownParser,
|
private val elementWellKnownParser: ElementWellKnownParser,
|
||||||
@Assisted private val getUrlResolver: GetUrlResolver,
|
@Assisted private val urlContentFetcher: UrlContentFetcher,
|
||||||
@AppCoroutineScope private val coroutineScope: CoroutineScope,
|
@AppCoroutineScope private val coroutineScope: CoroutineScope,
|
||||||
) : WellknownRetriever {
|
) : WellknownRetriever {
|
||||||
@ContributesBinding(AppScope::class)
|
@ContributesBinding(AppScope::class)
|
||||||
@AssistedFactory
|
@AssistedFactory
|
||||||
fun interface Factory : WellknownRetriever.Factory {
|
fun interface Factory : WellknownRetriever.Factory {
|
||||||
override fun create(getUrlResolver: GetUrlResolver): DefaultWellknownRetriever
|
override fun create(urlContentFetcher: UrlContentFetcher): DefaultWellknownRetriever
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun getElementWellKnown(
|
override suspend fun getElementWellKnown(
|
||||||
@@ -95,7 +95,7 @@ class DefaultWellknownRetriever(
|
|||||||
source: EnterpriseRemoteConfigSource,
|
source: EnterpriseRemoteConfigSource,
|
||||||
store: ElementWellknownStore
|
store: ElementWellknownStore
|
||||||
): WellknownRetrieverResult<ElementWellKnown> {
|
): WellknownRetrieverResult<ElementWellKnown> {
|
||||||
return getUrlResolver
|
return urlContentFetcher
|
||||||
.getUrl(url(host, source))
|
.getUrl(url(host, source))
|
||||||
.mapCatchingExceptions {
|
.mapCatchingExceptions {
|
||||||
val data = String(it)
|
val data = String(it)
|
||||||
|
|||||||
+3
-3
@@ -13,7 +13,7 @@ import dev.zacsweers.metro.Provides
|
|||||||
import io.element.android.features.enterprise.api.EnterpriseService
|
import io.element.android.features.enterprise.api.EnterpriseService
|
||||||
import io.element.android.libraries.di.SessionScope
|
import io.element.android.libraries.di.SessionScope
|
||||||
import io.element.android.libraries.di.annotations.SessionCoroutineScope
|
import io.element.android.libraries.di.annotations.SessionCoroutineScope
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
import io.element.android.libraries.wellknown.api.ElementWellKnownParser
|
import io.element.android.libraries.wellknown.api.ElementWellKnownParser
|
||||||
import io.element.android.libraries.wellknown.api.ElementWellknownStore
|
import io.element.android.libraries.wellknown.api.ElementWellknownStore
|
||||||
import io.element.android.libraries.wellknown.api.WellknownRetriever
|
import io.element.android.libraries.wellknown.api.WellknownRetriever
|
||||||
@@ -27,14 +27,14 @@ object SessionWellknownModule {
|
|||||||
elementWellknownStoreFactory: ElementWellknownStore.Factory,
|
elementWellknownStoreFactory: ElementWellknownStore.Factory,
|
||||||
enterpriseService: EnterpriseService,
|
enterpriseService: EnterpriseService,
|
||||||
elementWellKnownParser: ElementWellKnownParser,
|
elementWellKnownParser: ElementWellKnownParser,
|
||||||
getUrlResolver: GetUrlResolver,
|
urlContentFetcher: UrlContentFetcher,
|
||||||
@SessionCoroutineScope coroutineScope: CoroutineScope,
|
@SessionCoroutineScope coroutineScope: CoroutineScope,
|
||||||
): WellknownRetriever {
|
): WellknownRetriever {
|
||||||
return DefaultWellknownRetriever(
|
return DefaultWellknownRetriever(
|
||||||
elementWellknownStoreFactory = elementWellknownStoreFactory,
|
elementWellknownStoreFactory = elementWellknownStoreFactory,
|
||||||
enterpriseService = enterpriseService,
|
enterpriseService = enterpriseService,
|
||||||
elementWellKnownParser = elementWellKnownParser,
|
elementWellKnownParser = elementWellKnownParser,
|
||||||
getUrlResolver = getUrlResolver,
|
urlContentFetcher = urlContentFetcher,
|
||||||
coroutineScope = coroutineScope
|
coroutineScope = coroutineScope
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-8
@@ -14,7 +14,7 @@ import com.google.common.truth.Truth.assertThat
|
|||||||
import io.element.android.features.enterprise.test.FakeEnterpriseService
|
import io.element.android.features.enterprise.test.FakeEnterpriseService
|
||||||
import io.element.android.features.wellknown.test.FakeElementWellknownStore
|
import io.element.android.features.wellknown.test.FakeElementWellknownStore
|
||||||
import io.element.android.features.wellknown.test.anElementWellKnown
|
import io.element.android.features.wellknown.test.anElementWellKnown
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
import io.element.android.libraries.matrix.api.exception.ClientException
|
import io.element.android.libraries.matrix.api.exception.ClientException
|
||||||
import io.element.android.libraries.wellknown.api.ElementWellKnown
|
import io.element.android.libraries.wellknown.api.ElementWellKnown
|
||||||
import io.element.android.libraries.wellknown.api.ElementWellKnownParser
|
import io.element.android.libraries.wellknown.api.ElementWellKnownParser
|
||||||
@@ -31,7 +31,7 @@ class DefaultWellknownRetrieverTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `get element wellknown calls resolver and parser`() = runTest {
|
fun `get element wellknown calls resolver and parser`() = runTest {
|
||||||
val parser = lambdaRecorder<String, Result<ElementWellKnown>> { Result.success(anElementWellKnown()) }
|
val parser = lambdaRecorder<String, Result<ElementWellKnown>> { Result.success(anElementWellKnown()) }
|
||||||
val resolver = SpyGetUrlResolver { Result.success(WELLKNOWN_CONTENT.toByteArray()) }
|
val resolver = SpyUrlContentFetcher { Result.success(WELLKNOWN_CONTENT.toByteArray()) }
|
||||||
val sut = createDefaultWellknownRetriever(
|
val sut = createDefaultWellknownRetriever(
|
||||||
elementWellKnownParser = parser,
|
elementWellKnownParser = parser,
|
||||||
urlResolver = resolver,
|
urlResolver = resolver,
|
||||||
@@ -54,7 +54,7 @@ class DefaultWellknownRetrieverTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `get element wellknown network error`() = runTest {
|
fun `get element wellknown network error`() = runTest {
|
||||||
val resolver = SpyGetUrlResolver { Result.failure(IllegalStateException("Network error")) }
|
val resolver = SpyUrlContentFetcher { Result.failure(IllegalStateException("Network error")) }
|
||||||
val sut = createDefaultWellknownRetriever(urlResolver = resolver)
|
val sut = createDefaultWellknownRetriever(urlResolver = resolver)
|
||||||
assertThat(sut.getElementWellKnown(WELLKNOWN_URL, EnterpriseRemoteConfigSource.WELLKNOWN_ENDPOINT))
|
assertThat(sut.getElementWellKnown(WELLKNOWN_URL, EnterpriseRemoteConfigSource.WELLKNOWN_ENDPOINT))
|
||||||
.isInstanceOf(WellknownRetrieverResult.Error::class.java)
|
.isInstanceOf(WellknownRetrieverResult.Error::class.java)
|
||||||
@@ -62,7 +62,7 @@ class DefaultWellknownRetrieverTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `get element wellknown 404 http error counts as not found`() = runTest {
|
fun `get element wellknown 404 http error counts as not found`() = runTest {
|
||||||
val resolver = SpyGetUrlResolver { Result.failure(ClientException.Generic("Http error: 404", null)) }
|
val resolver = SpyUrlContentFetcher { Result.failure(ClientException.Generic("Http error: 404", null)) }
|
||||||
val sut = createDefaultWellknownRetriever(urlResolver = resolver)
|
val sut = createDefaultWellknownRetriever(urlResolver = resolver)
|
||||||
assertThat(sut.getElementWellKnown(WELLKNOWN_URL, EnterpriseRemoteConfigSource.WELLKNOWN_ENDPOINT))
|
assertThat(sut.getElementWellKnown(WELLKNOWN_URL, EnterpriseRemoteConfigSource.WELLKNOWN_ENDPOINT))
|
||||||
.isInstanceOf(WellknownRetrieverResult.NotFound::class.java)
|
.isInstanceOf(WellknownRetrieverResult.NotFound::class.java)
|
||||||
@@ -72,7 +72,7 @@ class DefaultWellknownRetrieverTest {
|
|||||||
fun `get element wellknown was overridden`() = runTest {
|
fun `get element wellknown was overridden`() = runTest {
|
||||||
val wellKnown = anElementWellKnown()
|
val wellKnown = anElementWellKnown()
|
||||||
|
|
||||||
val resolver = SpyGetUrlResolver { Result.success(WELLKNOWN_CONTENT.toByteArray()) }
|
val resolver = SpyUrlContentFetcher { Result.success(WELLKNOWN_CONTENT.toByteArray()) }
|
||||||
|
|
||||||
val sut = createDefaultWellknownRetriever(
|
val sut = createDefaultWellknownRetriever(
|
||||||
enterpriseService = FakeEnterpriseService(
|
enterpriseService = FakeEnterpriseService(
|
||||||
@@ -94,12 +94,12 @@ class DefaultWellknownRetrieverTest {
|
|||||||
cacheStore: FakeElementWellknownStore = FakeElementWellknownStore(),
|
cacheStore: FakeElementWellknownStore = FakeElementWellknownStore(),
|
||||||
elementWellKnownParser: ElementWellKnownParser = { Result.success(expectedElementWellKnown) },
|
elementWellKnownParser: ElementWellKnownParser = { Result.success(expectedElementWellKnown) },
|
||||||
enterpriseService: FakeEnterpriseService = FakeEnterpriseService(overrideWellKnownResult = { null }),
|
enterpriseService: FakeEnterpriseService = FakeEnterpriseService(overrideWellKnownResult = { null }),
|
||||||
urlResolver: GetUrlResolver = SpyGetUrlResolver { Result.success(WELLKNOWN_CONTENT.toByteArray()) },
|
urlResolver: UrlContentFetcher = SpyUrlContentFetcher { Result.success(WELLKNOWN_CONTENT.toByteArray()) },
|
||||||
) = DefaultWellknownRetriever(
|
) = DefaultWellknownRetriever(
|
||||||
elementWellknownStoreFactory = { cacheStore },
|
elementWellknownStoreFactory = { cacheStore },
|
||||||
enterpriseService = enterpriseService,
|
enterpriseService = enterpriseService,
|
||||||
elementWellKnownParser = elementWellKnownParser,
|
elementWellKnownParser = elementWellKnownParser,
|
||||||
getUrlResolver = urlResolver,
|
urlContentFetcher = urlResolver,
|
||||||
coroutineScope = backgroundScope,
|
coroutineScope = backgroundScope,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ class DefaultWellknownRetrieverTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SpyGetUrlResolver(lambda: (String) -> Result<ByteArray>) : GetUrlResolver {
|
private class SpyUrlContentFetcher(lambda: (String) -> Result<ByteArray>) : UrlContentFetcher {
|
||||||
private val spy = lambdaRecorder<String, Result<ByteArray>> { lambda(it) }
|
private val spy = lambdaRecorder<String, Result<ByteArray>> { lambda(it) }
|
||||||
|
|
||||||
override suspend fun getUrl(url: String): Result<ByteArray> {
|
override suspend fun getUrl(url: String): Result<ByteArray> {
|
||||||
|
|||||||
+2
-2
@@ -7,11 +7,11 @@
|
|||||||
|
|
||||||
package io.element.android.features.wellknown.test
|
package io.element.android.features.wellknown.test
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.GetUrlResolver
|
import io.element.android.libraries.matrix.api.UrlContentFetcher
|
||||||
import io.element.android.libraries.wellknown.api.WellknownRetriever
|
import io.element.android.libraries.wellknown.api.WellknownRetriever
|
||||||
|
|
||||||
class FakeWellknownRetrieverFactory(
|
class FakeWellknownRetrieverFactory(
|
||||||
private val wellknownRetriever: WellknownRetriever = FakeWellknownRetriever(),
|
private val wellknownRetriever: WellknownRetriever = FakeWellknownRetriever(),
|
||||||
) : WellknownRetriever.Factory {
|
) : WellknownRetriever.Factory {
|
||||||
override fun create(getUrlResolver: GetUrlResolver): WellknownRetriever = wellknownRetriever
|
override fun create(urlContentFetcher: UrlContentFetcher): WellknownRetriever = wellknownRetriever
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user