Remove FeatureFlag.QrCodeLogin

This commit is contained in:
Benoit Marty
2025-08-12 14:47:14 +02:00
committed by Benoit Marty
parent 1268f74420
commit be9861bea9
4 changed files with 1 additions and 35 deletions
@@ -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
} }
@@ -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) }
@@ -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,
@@ -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",