From c3c8fe20d853777843b2cba4ac5e9d6e5d06ee9c Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Thu, 11 Jun 2026 16:33:10 -0400 Subject: [PATCH] chore(onboarding): skip contact permission screen during onboarding Flip skipContacts default to true and make initialStack respect the flag so the contact permission step is no longer shown. All supporting code is preserved for easy re-enablement by reverting the default. --- .../src/main/kotlin/com/flipcash/app/core/AppRoute.kt | 7 +++++-- .../kotlin/com/flipcash/app/login/OnboardingFlowScreen.kt | 2 +- .../com/flipcash/app/login/OnboardingRoutingTest.kt | 8 ++++---- 3 files changed, 10 insertions(+), 7 deletions(-) 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 af1682b8c..64a737b9b 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 @@ -72,7 +72,7 @@ sealed interface AppRoute : NavKey, Parcelable { val seed: String? = null, val fromDeeplink: Boolean = false, val resumeAt: ResumePoint = ResumePoint.Login, - val skipContacts: Boolean = false, + val skipContacts: Boolean = true, ) : AppRoute, FlowRoute { enum class Phase { Account, Permissions } enum class ResumePoint { Login, AccessKey, AccessKeyThenPurchase, PostAccessKey } @@ -86,7 +86,10 @@ sealed interface AppRoute : NavKey, Parcelable { listOf(OnboardingStep.Start(), OnboardingStep.AccessKey, OnboardingStep.Purchase) ResumePoint.PostAccessKey -> emptyList() } - Phase.Permissions -> listOf(OnboardingStep.ContactPermission, OnboardingStep.NotificationPermission) + Phase.Permissions -> buildList { + if (!skipContacts) add(OnboardingStep.ContactPermission) + add(OnboardingStep.NotificationPermission) + } } } diff --git a/apps/flipcash/features/login/src/main/kotlin/com/flipcash/app/login/OnboardingFlowScreen.kt b/apps/flipcash/features/login/src/main/kotlin/com/flipcash/app/login/OnboardingFlowScreen.kt index ce13533bf..c0b3bcecf 100644 --- a/apps/flipcash/features/login/src/main/kotlin/com/flipcash/app/login/OnboardingFlowScreen.kt +++ b/apps/flipcash/features/login/src/main/kotlin/com/flipcash/app/login/OnboardingFlowScreen.kt @@ -233,7 +233,7 @@ private fun AccountPhaseFlowHost( internal fun resolvePostAccountRoute( result: OnboardingResult, - skipContacts: Boolean = false, + skipContacts: Boolean = true, ): AppRoute? { val permissionsRoute = AppRoute.OnboardingFlow( phase = AppRoute.OnboardingFlow.Phase.Permissions, diff --git a/apps/flipcash/features/login/src/test/kotlin/com/flipcash/app/login/OnboardingRoutingTest.kt b/apps/flipcash/features/login/src/test/kotlin/com/flipcash/app/login/OnboardingRoutingTest.kt index 4ab36e891..abc5c3220 100644 --- a/apps/flipcash/features/login/src/test/kotlin/com/flipcash/app/login/OnboardingRoutingTest.kt +++ b/apps/flipcash/features/login/src/test/kotlin/com/flipcash/app/login/OnboardingRoutingTest.kt @@ -18,7 +18,7 @@ class OnboardingRoutingTest { ) val flow = assertIs(route) assertEquals(AppRoute.OnboardingFlow.Phase.Permissions, flow.phase) - assertEquals(false, flow.skipContacts) + assertEquals(true, flow.skipContacts) } // -- LoggedIn routes to permissions -- @@ -30,7 +30,7 @@ class OnboardingRoutingTest { ) val flow = assertIs(route) assertEquals(AppRoute.OnboardingFlow.Phase.Permissions, flow.phase) - assertEquals(false, flow.skipContacts) + assertEquals(true, flow.skipContacts) } // -- skipContacts is forwarded -- @@ -39,11 +39,11 @@ class OnboardingRoutingTest { fun `skipContacts is forwarded to permissions route`() { val route = resolvePostAccountRoute( result = OnboardingResult.ProceedToVerification, - skipContacts = true, + skipContacts = false, ) val flow = assertIs(route) assertEquals(AppRoute.OnboardingFlow.Phase.Permissions, flow.phase) - assertEquals(true, flow.skipContacts) + assertEquals(false, flow.skipContacts) } // -- Completed (no-op) --