Add a way to tweak MAS url.

This commit is contained in:
Benoit Marty 2026-04-28 17:55:56 +02:00 committed by Benoit Marty
parent 6ba4679908
commit a76b55e580
19 changed files with 60 additions and 7 deletions

View file

@ -19,6 +19,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import dev.zacsweers.metro.Inject
import io.element.android.features.enterprise.api.SessionEnterpriseService
import io.element.android.features.logout.api.direct.DirectLogoutState
import io.element.android.features.preferences.impl.utils.ShowDeveloperSettingsProvider
import io.element.android.features.rageshake.api.RageshakeFeatureAvailability
@ -55,6 +56,7 @@ class PreferencesRootPresenter(
private val rageshakeFeatureAvailability: RageshakeFeatureAvailability,
private val featureFlagService: FeatureFlagService,
private val sessionStore: SessionStore,
private val sessionEnterpriseService: SessionEnterpriseService,
) : Presenter<PreferencesRootState> {
@Composable
override fun present(): PreferencesRootState {
@ -158,6 +160,10 @@ class PreferencesRootPresenter(
private fun CoroutineScope.initAccountManagementUrl(
accountManagementUrl: MutableState<String?>,
) = launch {
accountManagementUrl.value = matrixClient.getAccountManagementUrl(null).getOrNull()
accountManagementUrl.value = matrixClient.getAccountManagementUrl(null)
.getOrNull()
?.let {
sessionEnterpriseService.tweakMasUrl(it)
}
}
}

View file

@ -12,6 +12,8 @@ package io.element.android.features.preferences.impl.root
import app.cash.turbine.ReceiveTurbine
import com.google.common.truth.Truth.assertThat
import io.element.android.features.enterprise.api.SessionEnterpriseService
import io.element.android.features.enterprise.test.FakeSessionEnterpriseService
import io.element.android.features.logout.api.direct.aDirectLogoutState
import io.element.android.features.preferences.impl.utils.ShowDeveloperSettingsProvider
import io.element.android.features.rageshake.api.RageshakeFeatureAvailability
@ -65,6 +67,9 @@ class PreferencesRootPresenterTest {
)
createPresenter(
matrixClient = matrixClient,
sessionEnterpriseService = FakeSessionEnterpriseService(
tweakMasUrlResult = { "tweaked $it" },
),
).test {
val initialState = awaitItem()
assertThat(initialState.myUser).isEqualTo(
@ -100,7 +105,7 @@ class PreferencesRootPresenterTest {
val finalState = awaitItem()
accountManagementUrlResult.assertions().isCalledOnce()
.with(value(null))
assertThat(finalState.accountManagementUrl).isEqualTo("null url")
assertThat(finalState.accountManagementUrl).isEqualTo("tweaked null url")
}
}
@ -327,6 +332,7 @@ class PreferencesRootPresenterTest {
indicatorService: IndicatorService = FakeIndicatorService(),
featureFlagService: FeatureFlagService = FakeFeatureFlagService(),
sessionStore: SessionStore = InMemorySessionStore(),
sessionEnterpriseService: SessionEnterpriseService = FakeSessionEnterpriseService(),
) = PreferencesRootPresenter(
matrixClient = matrixClient,
sessionVerificationService = sessionVerificationService,
@ -339,5 +345,6 @@ class PreferencesRootPresenterTest {
rageshakeFeatureAvailability = rageshakeFeatureAvailability,
featureFlagService = featureFlagService,
sessionStore = sessionStore,
sessionEnterpriseService = sessionEnterpriseService,
)
}