Remove FeatureFlag.QrCodeLogin

This commit is contained in:
Benoit Marty 2025-08-12 14:47:14 +02:00 committed by Benoit Marty
parent fe8009e6bf
commit c42ae056f2
4 changed files with 1 additions and 35 deletions

View file

@ -8,9 +8,6 @@
package io.element.android.appconfig package io.element.android.appconfig
object OnBoardingConfig { object OnBoardingConfig {
/** Whether the user can use QR code login. */
const val CAN_LOGIN_WITH_QR_CODE = true
/** Whether the user can create an account using the app. */ /** Whether the user can create an account using the app. */
const val CAN_CREATE_ACCOUNT = true const val CAN_CREATE_ACCOUNT = true
} }

View file

@ -27,14 +27,11 @@ import io.element.android.features.login.impl.login.LoginHelper
import io.element.android.features.rageshake.api.RageshakeFeatureAvailability import io.element.android.features.rageshake.api.RageshakeFeatureAvailability
import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.core.meta.BuildMeta
import io.element.android.libraries.featureflag.api.FeatureFlagService
import io.element.android.libraries.featureflag.api.FeatureFlags
import io.element.android.libraries.ui.utils.MultipleTapToUnlock import io.element.android.libraries.ui.utils.MultipleTapToUnlock
class OnBoardingPresenter @AssistedInject constructor( class OnBoardingPresenter @AssistedInject constructor(
@Assisted private val params: OnBoardingNode.Params, @Assisted private val params: OnBoardingNode.Params,
private val buildMeta: BuildMeta, private val buildMeta: BuildMeta,
private val featureFlagService: FeatureFlagService,
private val enterpriseService: EnterpriseService, private val enterpriseService: EnterpriseService,
private val defaultAccountProviderAccessControl: DefaultAccountProviderAccessControl, private val defaultAccountProviderAccessControl: DefaultAccountProviderAccessControl,
private val rageshakeFeatureAvailability: RageshakeFeatureAvailability, private val rageshakeFeatureAvailability: RageshakeFeatureAvailability,
@ -80,8 +77,7 @@ class OnBoardingPresenter @AssistedInject constructor(
forcedAccountProvider ?: linkAccountProvider forcedAccountProvider ?: linkAccountProvider
} }
val canLoginWithQrCode by produceState(initialValue = false, linkAccountProvider) { val canLoginWithQrCode by produceState(initialValue = false, linkAccountProvider) {
value = linkAccountProvider == null && value = linkAccountProvider == null
featureFlagService.isFeatureEnabled(FeatureFlags.QrCodeLogin)
} }
val canReportBug by remember { rageshakeFeatureAvailability.isAvailable() }.collectAsState(false) val canReportBug by remember { rageshakeFeatureAvailability.isAvailable() }.collectAsState(false)
var showReportBug by rememberSaveable { mutableStateOf(false) } var showReportBug by rememberSaveable { mutableStateOf(false) }

View file

@ -19,9 +19,6 @@ import io.element.android.features.login.impl.web.WebClientUrlForAuthenticationR
import io.element.android.features.wellknown.test.FakeWellknownRetriever import io.element.android.features.wellknown.test.FakeWellknownRetriever
import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.AsyncData
import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.core.meta.BuildMeta
import io.element.android.libraries.featureflag.api.FeatureFlagService
import io.element.android.libraries.featureflag.api.FeatureFlags
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService
import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER
import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_2 import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_2
@ -70,13 +67,8 @@ class OnBoardingPresenterTest {
productionApplicationName = "B", productionApplicationName = "B",
desktopApplicationName = "C", desktopApplicationName = "C",
) )
val featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.QrCodeLogin.key to true),
buildMeta = buildMeta,
)
val presenter = createPresenter( val presenter = createPresenter(
buildMeta = buildMeta, buildMeta = buildMeta,
featureFlagService = featureFlagService,
enterpriseService = FakeEnterpriseService( enterpriseService = FakeEnterpriseService(
defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG, EnterpriseService.ANY_ACCOUNT_PROVIDER) }, defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG, EnterpriseService.ANY_ACCOUNT_PROVIDER) },
), ),
@ -131,9 +123,6 @@ class OnBoardingPresenterTest {
accountProvider = ACCOUNT_PROVIDER_FROM_LINK, accountProvider = ACCOUNT_PROVIDER_FROM_LINK,
loginHint = null, loginHint = null,
), ),
featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.QrCodeLogin.key to true),
),
enterpriseService = FakeEnterpriseService( enterpriseService = FakeEnterpriseService(
defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG, EnterpriseService.ANY_ACCOUNT_PROVIDER) }, defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG, EnterpriseService.ANY_ACCOUNT_PROVIDER) },
isAllowedToConnectToHomeserverResult = { true }, isAllowedToConnectToHomeserverResult = { true },
@ -156,9 +145,6 @@ class OnBoardingPresenterTest {
accountProvider = ACCOUNT_PROVIDER_FROM_LINK, accountProvider = ACCOUNT_PROVIDER_FROM_LINK,
loginHint = null, loginHint = null,
), ),
featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.QrCodeLogin.key to true),
),
enterpriseService = FakeEnterpriseService( enterpriseService = FakeEnterpriseService(
defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG, ACCOUNT_PROVIDER_FROM_CONFIG_2) }, defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG, ACCOUNT_PROVIDER_FROM_CONFIG_2) },
isAllowedToConnectToHomeserverResult = { false }, isAllowedToConnectToHomeserverResult = { false },
@ -181,9 +167,6 @@ class OnBoardingPresenterTest {
accountProvider = ACCOUNT_PROVIDER_FROM_LINK, accountProvider = ACCOUNT_PROVIDER_FROM_LINK,
loginHint = null, loginHint = null,
), ),
featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.QrCodeLogin.key to true),
),
enterpriseService = FakeEnterpriseService( enterpriseService = FakeEnterpriseService(
defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG) }, defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG) },
) )
@ -237,7 +220,6 @@ class OnBoardingPresenterTest {
private fun createPresenter( private fun createPresenter(
params: OnBoardingNode.Params = OnBoardingNode.Params(null, null), params: OnBoardingNode.Params = OnBoardingNode.Params(null, null),
buildMeta: BuildMeta = aBuildMeta(), buildMeta: BuildMeta = aBuildMeta(),
featureFlagService: FeatureFlagService = FakeFeatureFlagService(),
enterpriseService: EnterpriseService = FakeEnterpriseService(), enterpriseService: EnterpriseService = FakeEnterpriseService(),
wellknownRetriever: WellknownRetriever = FakeWellknownRetriever(), wellknownRetriever: WellknownRetriever = FakeWellknownRetriever(),
rageshakeFeatureAvailability: () -> Flow<Boolean> = { flowOf(true) }, rageshakeFeatureAvailability: () -> Flow<Boolean> = { flowOf(true) },
@ -245,7 +227,6 @@ private fun createPresenter(
) = OnBoardingPresenter( ) = OnBoardingPresenter(
params = params, params = params,
buildMeta = buildMeta, buildMeta = buildMeta,
featureFlagService = featureFlagService,
enterpriseService = enterpriseService, enterpriseService = enterpriseService,
defaultAccountProviderAccessControl = DefaultAccountProviderAccessControl( defaultAccountProviderAccessControl = DefaultAccountProviderAccessControl(
enterpriseService = enterpriseService, enterpriseService = enterpriseService,

View file

@ -7,7 +7,6 @@
package io.element.android.libraries.featureflag.api package io.element.android.libraries.featureflag.api
import io.element.android.appconfig.OnBoardingConfig
import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.core.meta.BuildMeta
import io.element.android.libraries.core.meta.BuildType import io.element.android.libraries.core.meta.BuildType
@ -35,13 +34,6 @@ enum class FeatureFlags(
defaultValue = { false }, defaultValue = { false },
isFinished = false, isFinished = false,
), ),
QrCodeLogin(
key = "feature.qrCodeLogin",
title = "Enable login using QR code",
description = "Allow the user to login using the QR code flow",
defaultValue = { OnBoardingConfig.CAN_LOGIN_WITH_QR_CODE },
isFinished = false,
),
PinnedEvents( PinnedEvents(
key = "feature.pinnedEvents", key = "feature.pinnedEvents",
title = "Pinned Events", title = "Pinned Events",