From fb4d37b696f47bdcd672e73b2b7c7d2fc90fe3ae Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Thu, 9 Jul 2026 13:40:33 -0400 Subject: [PATCH] chore(verification): remove intro screen when verifying both phone and email Signed-off-by: Brandon McAnsh --- .../kotlin/com/flipcash/app/core/AppRoute.kt | 5 - .../app/core/verification/VerificationStep.kt | 4 - .../verification/VerificationFlowScreen.kt | 4 - .../internal/VerificationFlowIntroScreen.kt | 149 ------------------ 4 files changed, 162 deletions(-) delete mode 100644 apps/flipcash/features/contact-verification/src/main/kotlin/com/flipcash/app/contact/verification/internal/VerificationFlowIntroScreen.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/AppRoute.kt b/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/AppRoute.kt index f6c86dc2d..d444a4bec 100644 --- a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/AppRoute.kt +++ b/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/AppRoute.kt @@ -128,7 +128,6 @@ sealed interface AppRoute : NavKey, Parcelable { ) : AppRoute, FlowRouteWithResult { override val initialStack: List get() = buildVerificationInitialStack( - origin = origin, includePhone = includePhone, includeEmail = includeEmail, emailAddress = email, @@ -271,15 +270,11 @@ sealed interface AppRoute : NavKey, Parcelable { } private fun buildVerificationInitialStack( - origin: AppRoute, includePhone: Boolean, includeEmail: Boolean, emailAddress: String?, emailVerificationCode: String?, ): List { - if (includePhone && includeEmail) { - return listOf(VerificationStep.Intro(origin is AppRoute.Token.Swap)) - } if (includePhone) { return listOf(VerificationStep.PhoneEntry) } diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/VerificationStep.kt b/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/VerificationStep.kt index 3ed2748b9..733fc8c62 100644 --- a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/VerificationStep.kt +++ b/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/verification/VerificationStep.kt @@ -11,10 +11,6 @@ import kotlinx.serialization.Serializable */ @Serializable sealed interface VerificationStep : FlowStep, Parcelable { - @Parcelize - @Serializable - data class Intro(val isForOnRamp: Boolean) : VerificationStep - @Parcelize @Serializable data object PhoneEntry : VerificationStep diff --git a/apps/flipcash/features/contact-verification/src/main/kotlin/com/flipcash/app/contact/verification/VerificationFlowScreen.kt b/apps/flipcash/features/contact-verification/src/main/kotlin/com/flipcash/app/contact/verification/VerificationFlowScreen.kt index 5f9966dfa..f48cb728d 100644 --- a/apps/flipcash/features/contact-verification/src/main/kotlin/com/flipcash/app/contact/verification/VerificationFlowScreen.kt +++ b/apps/flipcash/features/contact-verification/src/main/kotlin/com/flipcash/app/contact/verification/VerificationFlowScreen.kt @@ -6,7 +6,6 @@ import androidx.navigation3.runtime.NavKey import androidx.navigation3.runtime.entryProvider import com.flipcash.app.contact.verification.email.EmailMagicLinkContent import com.flipcash.app.contact.verification.email.EmailVerificationContent -import com.flipcash.app.contact.verification.internal.VerificationFlowIntroContent import com.flipcash.app.contact.verification.phone.PhoneCodeContent import com.flipcash.app.contact.verification.phone.PhoneCountryCodeContent import com.flipcash.app.contact.verification.phone.PhoneVerificationContent @@ -59,9 +58,6 @@ fun VerificationFlowScreen( private fun verificationEntryProvider( route: AppRoute.Verification, ): (NavKey) -> NavEntry = entryProvider { - annotatedEntry { step -> - VerificationFlowIntroContent(isForOnRamp = step.isForOnRamp) - } annotatedEntry { PhoneVerificationContent() } diff --git a/apps/flipcash/features/contact-verification/src/main/kotlin/com/flipcash/app/contact/verification/internal/VerificationFlowIntroScreen.kt b/apps/flipcash/features/contact-verification/src/main/kotlin/com/flipcash/app/contact/verification/internal/VerificationFlowIntroScreen.kt deleted file mode 100644 index 2d3bfbec5..000000000 --- a/apps/flipcash/features/contact-verification/src/main/kotlin/com/flipcash/app/contact/verification/internal/VerificationFlowIntroScreen.kt +++ /dev/null @@ -1,149 +0,0 @@ -package com.flipcash.app.contact.verification.internal - -import androidx.compose.foundation.Image -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.imePadding -import androidx.compose.foundation.layout.navigationBars -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.material.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Alignment.Companion.Center -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.tooling.preview.Preview -import com.flipcash.app.analytics.Analytics -import com.flipcash.app.analytics.rememberAnalytics -import com.flipcash.app.core.verification.VerificationResult -import com.flipcash.app.core.verification.VerificationStep -import com.flipcash.app.theme.FlipcashPreview -import com.flipcash.features.contact.verification.R -import com.getcode.navigation.core.LocalCodeNavigator -import com.getcode.navigation.flow.LocalOuterCodeNavigator -import com.getcode.navigation.flow.rememberFlowNavigator -import com.getcode.theme.CodeTheme -import com.getcode.ui.components.AppBarDefaults -import com.getcode.ui.components.AppBarWithTitle -import com.getcode.ui.theme.ButtonState -import com.getcode.ui.theme.CodeButton -import com.getcode.ui.theme.CodeScaffold - -@Composable -fun VerificationFlowIntroContent( - isForOnRamp: Boolean = true, -) { - val flowNavigator = rememberFlowNavigator() - - VerificationFlowIntroScreenContent( - isForOnRamp = isForOnRamp, - onClick = { flowNavigator.navigateTo(VerificationStep.PhoneEntry) }, - ) - - val analytics = rememberAnalytics() - LaunchedEffect(Unit) { - analytics.onrampVerification(Analytics.OnrampVerificationStep.ShowInfo) - } -} - -@Composable -private fun VerificationFlowIntroScreenContent( - isForOnRamp: Boolean, - onClick: () -> Unit, -) { - val navigator = LocalOuterCodeNavigator.current - val isSheetRoot = remember { navigator.backStack.size <= 1 } - CodeScaffold( - modifier = Modifier - .fillMaxSize() - .windowInsetsPadding(WindowInsets.navigationBars), - topBar = { - if (isSheetRoot) { - AppBarWithTitle( - endContent = { - AppBarDefaults.Close { navigator.hide() } - }, - ) - } else { - AppBarWithTitle( - backButton = true, - onBackIconClicked = { navigator.pop() }, - ) - } - }, - bottomBar = { - CodeButton( - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = CodeTheme.dimens.inset) - .padding(bottom = CodeTheme.dimens.grid.x3) - .imePadding(), - buttonState = ButtonState.Filled, - text = stringResource(R.string.action_next), - ) { onClick() } - } - ) { innerPadding -> - Box( - modifier = Modifier - .fillMaxSize() - .padding(innerPadding), - contentAlignment = Center - ) { - Column( - modifier = Modifier - .fillMaxWidth(0.8f), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - Spacer(Modifier.weight(1f)) - Image( - painter = painterResource(R.drawable.ic_contact_method_verification), - contentDescription = null - ) - Text( - modifier = Modifier - .padding(top = CodeTheme.dimens.inset), - text = stringResource(R.string.title_verificationFlow), - style = CodeTheme.typography.textLarge, - color = CodeTheme.colors.textMain, - textAlign = TextAlign.Center, - ) - - if (isForOnRamp) { - Text( - modifier = Modifier - .padding(top = CodeTheme.dimens.grid.x3) - .padding(horizontal = CodeTheme.dimens.inset), - text = stringResource(R.string.subtitle_verificationFlowForOnramp), - style = CodeTheme.typography.textMedium, - color = CodeTheme.colors.textSecondary, - textAlign = TextAlign.Center, - ) - } - Spacer(Modifier.weight(1f)) - } - } - } -} - -@Preview -@Composable -private fun Preview_FlowIntro() { - FlipcashPreview { - Box(modifier = Modifier.fillMaxSize().background(CodeTheme.colors.background)) { - VerificationFlowIntroScreenContent( - isForOnRamp = true, - onClick = { } - ) - } - } -}