From d5b5439db16cfca18bed25cfbbafeedd44810659 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 16 Jan 2025 18:07:09 +0100 Subject: [PATCH] change(flow) : remove developer entry point from OnBoarding --- .../android/appnav/NotLoggedInFlowNode.kt | 12 ------- .../onboarding/api/OnBoardingEntryPoint.kt | 1 - .../onboarding/impl/OnBoardingNode.kt | 5 --- .../onboarding/impl/OnBoardingPresenter.kt | 4 +-- .../onboarding/impl/OnBoardingState.kt | 1 - .../impl/OnBoardingStateProvider.kt | 3 -- .../onboarding/impl/OnBoardingView.kt | 35 ++++--------------- .../impl/OnBoardingPresenterTest.kt | 18 ---------- .../onboarding/impl/OnboardingViewTest.kt | 15 -------- 9 files changed, 7 insertions(+), 87 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt index d6db29169d..c8c88ad02d 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt @@ -24,7 +24,6 @@ import io.element.android.anvilannotations.ContributesNode import io.element.android.features.login.api.LoginEntryPoint import io.element.android.features.login.api.LoginFlowType import io.element.android.features.onboarding.api.OnBoardingEntryPoint -import io.element.android.features.preferences.api.ConfigureTracingEntryPoint import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.designsystem.utils.ForceOrientationInMobileDevices @@ -38,7 +37,6 @@ class NotLoggedInFlowNode @AssistedInject constructor( @Assisted buildContext: BuildContext, @Assisted plugins: List, private val onBoardingEntryPoint: OnBoardingEntryPoint, - private val configureTracingEntryPoint: ConfigureTracingEntryPoint, private val loginEntryPoint: LoginEntryPoint, private val notLoggedInImageLoaderFactory: NotLoggedInImageLoaderFactory, ) : BaseFlowNode( @@ -68,9 +66,6 @@ class NotLoggedInFlowNode @AssistedInject constructor( @Parcelize data class LoginFlow(val type: LoginFlowType) : NavTarget - - @Parcelize - data object ConfigureTracing : NavTarget } override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { @@ -89,10 +84,6 @@ class NotLoggedInFlowNode @AssistedInject constructor( backstack.push(NavTarget.LoginFlow(type = LoginFlowType.SIGN_IN_QR_CODE)) } - override fun onOpenDeveloperSettings() { - backstack.push(NavTarget.ConfigureTracing) - } - override fun onReportProblem() { plugins().forEach { it.onOpenBugReport() } } @@ -107,9 +98,6 @@ class NotLoggedInFlowNode @AssistedInject constructor( .params(LoginEntryPoint.Params(flowType = navTarget.type)) .build() } - NavTarget.ConfigureTracing -> { - configureTracingEntryPoint.createNode(this, buildContext) - } } } diff --git a/features/onboarding/api/src/main/kotlin/io/element/android/features/onboarding/api/OnBoardingEntryPoint.kt b/features/onboarding/api/src/main/kotlin/io/element/android/features/onboarding/api/OnBoardingEntryPoint.kt index e40196a0b7..378176a2a7 100644 --- a/features/onboarding/api/src/main/kotlin/io/element/android/features/onboarding/api/OnBoardingEntryPoint.kt +++ b/features/onboarding/api/src/main/kotlin/io/element/android/features/onboarding/api/OnBoardingEntryPoint.kt @@ -24,7 +24,6 @@ interface OnBoardingEntryPoint : FeatureEntryPoint { fun onSignUp() fun onSignIn() fun onSignInWithQrCode() - fun onOpenDeveloperSettings() fun onReportProblem() } } diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingNode.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingNode.kt index 786ddbad3e..f26a6fdd78 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingNode.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingNode.kt @@ -40,10 +40,6 @@ class OnBoardingNode @AssistedInject constructor( plugins().forEach { it.onSignInWithQrCode() } } - private fun onOpenDeveloperSettings() { - plugins().forEach { it.onOpenDeveloperSettings() } - } - private fun onReportProblem() { plugins().forEach { it.onReportProblem() } } @@ -57,7 +53,6 @@ class OnBoardingNode @AssistedInject constructor( onSignIn = ::onSignIn, onCreateAccount = ::onSignUp, onSignInWithQrCode = ::onSignInWithQrCode, - onOpenDeveloperSettings = ::onOpenDeveloperSettings, onReportProblem = ::onReportProblem, ) } diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenter.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenter.kt index 0db04ffecf..8d33f60393 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenter.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenter.kt @@ -13,7 +13,6 @@ import androidx.compose.runtime.produceState import io.element.android.appconfig.OnBoardingConfig import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.meta.BuildMeta -import io.element.android.libraries.core.meta.BuildType import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.featureflag.api.FeatureFlags import javax.inject.Inject @@ -31,8 +30,7 @@ class OnBoardingPresenter @Inject constructor( val canLoginWithQrCode by produceState(initialValue = false) { value = featureFlagService.isFeatureEnabled(FeatureFlags.QrCodeLogin) } - return OnBoardingState( - isDebugBuild = buildMeta.buildType != BuildType.RELEASE, + return OnBoardingState( productionApplicationName = buildMeta.productionApplicationName, canLoginWithQrCode = canLoginWithQrCode, canCreateAccount = OnBoardingConfig.CAN_CREATE_ACCOUNT, diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingState.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingState.kt index 155ea94da8..6ffb80c2bd 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingState.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingState.kt @@ -8,7 +8,6 @@ package io.element.android.features.onboarding.impl data class OnBoardingState( - val isDebugBuild: Boolean, val productionApplicationName: String, val canLoginWithQrCode: Boolean, val canCreateAccount: Boolean, diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingStateProvider.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingStateProvider.kt index e375368fc3..25dc697782 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingStateProvider.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingStateProvider.kt @@ -16,17 +16,14 @@ open class OnBoardingStateProvider : PreviewParameterProvider { anOnBoardingState(canLoginWithQrCode = true), anOnBoardingState(canCreateAccount = true), anOnBoardingState(canLoginWithQrCode = true, canCreateAccount = true), - anOnBoardingState(isDebugBuild = true), ) } fun anOnBoardingState( - isDebugBuild: Boolean = false, productionApplicationName: String = "Element", canLoginWithQrCode: Boolean = false, canCreateAccount: Boolean = false ) = OnBoardingState( - isDebugBuild = isDebugBuild, productionApplicationName = productionApplicationName, canLoginWithQrCode = canLoginWithQrCode, canCreateAccount = canCreateAccount diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingView.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingView.kt index 6dcefd36c5..2d84a618fc 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingView.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingView.kt @@ -18,7 +18,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.QrCode import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment.Companion.CenterHorizontally import androidx.compose.ui.BiasAlignment import androidx.compose.ui.Modifier @@ -28,7 +27,6 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import io.element.android.compound.theme.ElementTheme -import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.libraries.designsystem.atomic.atoms.ElementLogoAtom import io.element.android.libraries.designsystem.atomic.atoms.ElementLogoAtomSize import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule @@ -36,8 +34,6 @@ import io.element.android.libraries.designsystem.atomic.pages.OnBoardingPage import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Button -import io.element.android.libraries.designsystem.theme.components.Icon -import io.element.android.libraries.designsystem.theme.components.IconButton import io.element.android.libraries.designsystem.theme.components.IconSource import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TextButton @@ -56,17 +52,13 @@ fun OnBoardingView( onSignInWithQrCode: () -> Unit, onSignIn: () -> Unit, onCreateAccount: () -> Unit, - onOpenDeveloperSettings: () -> Unit, onReportProblem: () -> Unit, modifier: Modifier = Modifier, ) { OnBoardingPage( modifier = modifier, content = { - OnBoardingContent( - state = state, - onOpenDeveloperSettings = onOpenDeveloperSettings - ) + OnBoardingContent(state = state) }, footer = { OnBoardingButtons( @@ -81,10 +73,7 @@ fun OnBoardingView( } @Composable -private fun OnBoardingContent( - state: OnBoardingState, - onOpenDeveloperSettings: () -> Unit, -) { +private fun OnBoardingContent(state: OnBoardingState) { Box( modifier = Modifier.fillMaxSize(), ) { @@ -127,17 +116,6 @@ private fun OnBoardingContent( ) } } - if (state.isDebugBuild) { - IconButton( - modifier = Modifier.align(Alignment.TopEnd), - onClick = onOpenDeveloperSettings, - ) { - Icon( - imageVector = CompoundIcons.SettingsSolid(), - contentDescription = stringResource(CommonStrings.common_settings) - ) - } - } } } @@ -167,8 +145,8 @@ private fun OnBoardingButtons( text = stringResource(id = signInButtonStringRes), onClick = onSignIn, modifier = Modifier - .fillMaxWidth() - .testTag(TestTags.onBoardingSignIn) + .fillMaxWidth() + .testTag(TestTags.onBoardingSignIn) ) if (state.canCreateAccount) { TextButton( @@ -181,8 +159,8 @@ private fun OnBoardingButtons( // Add a report problem text button. Use a Text since we need a special theme here. Text( modifier = Modifier - .padding(16.dp) - .clickable(onClick = onReportProblem), + .padding(16.dp) + .clickable(onClick = onReportProblem), text = stringResource(id = CommonStrings.common_report_a_problem), style = ElementTheme.typography.fontBodySmRegular, color = ElementTheme.colors.textSecondary, @@ -200,7 +178,6 @@ internal fun OnBoardingViewPreview( onSignInWithQrCode = {}, onSignIn = {}, onCreateAccount = {}, - onOpenDeveloperSettings = {}, onReportProblem = {}, ) } diff --git a/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenterTest.kt b/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenterTest.kt index 253781117e..e98fbff3db 100644 --- a/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenterTest.kt +++ b/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenterTest.kt @@ -12,7 +12,6 @@ import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.OnBoardingConfig -import io.element.android.libraries.core.meta.BuildType import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.test.core.aBuildMeta @@ -44,27 +43,10 @@ class OnBoardingPresenterTest { presenter.present() }.test { val initialState = awaitItem() - assertThat(initialState.isDebugBuild).isTrue() assertThat(initialState.canLoginWithQrCode).isFalse() assertThat(initialState.productionApplicationName).isEqualTo("B") assertThat(initialState.canCreateAccount).isEqualTo(OnBoardingConfig.CAN_CREATE_ACCOUNT) - assertThat(awaitItem().canLoginWithQrCode).isTrue() } } - - @Test - fun `present - initial state release`() = runTest { - val presenter = OnBoardingPresenter( - buildMeta = aBuildMeta(buildType = BuildType.RELEASE), - featureFlagService = FakeFeatureFlagService(), - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { - val initialState = awaitItem() - assertThat(initialState.isDebugBuild).isFalse() - cancelAndIgnoreRemainingEvents() - } - } } diff --git a/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnboardingViewTest.kt b/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnboardingViewTest.kt index 1fcdbb8378..25cb075697 100644 --- a/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnboardingViewTest.kt +++ b/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnboardingViewTest.kt @@ -8,10 +8,8 @@ package io.element.android.features.onboarding.impl import androidx.activity.ComponentActivity -import androidx.compose.ui.test.hasContentDescription import androidx.compose.ui.test.junit4.AndroidComposeTestRule import androidx.compose.ui.test.junit4.createAndroidComposeRule -import androidx.compose.ui.test.performClick import androidx.test.ext.junit.runners.AndroidJUnit4 import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.tests.testutils.EnsureNeverCalled @@ -74,17 +72,6 @@ class OnboardingViewTest { } } - @Test - fun `when on debug build - clicking on the settings icon opens the developer settings`() { - ensureCalledOnce { callback -> - rule.setOnboardingView( - state = anOnBoardingState(isDebugBuild = true), - onOpenDeveloperSettings = callback - ) - rule.onNode(hasContentDescription(rule.activity.getString(CommonStrings.common_settings))).performClick() - } - } - @Test fun `clicking on report a problem calls the sign in callback`() { ensureCalledOnce { callback -> @@ -101,7 +88,6 @@ class OnboardingViewTest { onSignInWithQrCode: () -> Unit = EnsureNeverCalled(), onSignIn: () -> Unit = EnsureNeverCalled(), onCreateAccount: () -> Unit = EnsureNeverCalled(), - onOpenDeveloperSettings: () -> Unit = EnsureNeverCalled(), onReportProblem: () -> Unit = EnsureNeverCalled(), ) { setContent { @@ -110,7 +96,6 @@ class OnboardingViewTest { onSignInWithQrCode = onSignInWithQrCode, onSignIn = onSignIn, onCreateAccount = onCreateAccount, - onOpenDeveloperSettings = onOpenDeveloperSettings, onReportProblem = onReportProblem, ) }