Skip to content

feat(onboarding): new-user onboarding tweaks - #1862

Merged
bmc08gt merged 5 commits into
code/cashfrom
feat/new-user-onboarding-tweaks
Oct 27, 2026
Merged

bmc08gt merged 5 commits into
code/cashfrom
feat/new-user-onboarding-tweaks

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

New users now land on Chats after onboarding, see only the Add Money row on Money, get a "Complete Your Profile" prompt on You, and set a username from a plain row on Edit Profile. Design: "(Ted) Tweak Screens For New User [Oct 22]", node 12527:81344, frames 10–13. iOS ships the same change in code-payments/code-ios-app#1139.

One commit per change:

  • Land on Chats (frame 10). Onboarding ends on launchRoute ([Tabs.Chats], OnboardingFlowScreen.kt:156), the route sign-in and cold launch already use. AppRoute.OnboardingFlow.newAccount is deleted. homeRoute (Wallet) stays only as the deeplink base.
  • Money tab (frame 11). The new-user tutorial and its "Send Your First Tip" helper are removed. A new user sees only Add Money / "Add money to your account". This also fixes a race where the row could flash for an established account right after a fresh login: ActivityFeedCoordinator.resolveHasReceivedMoney now waits until the received-money read is known. ResolveHasReceivedMoneyTest covers it.
  • You tab (frame 12). The "Claim your username" row is removed. The Edit Profile button reads "Complete Your Profile" until the profile is complete, then "Edit Profile" in gray. Its colour is rememberDynamicAccent with the same fallbacks as the currency creator's Next button. Complete is isProfileComplete (MenuScreenViewModel.kt:267): profile photo, cover photo and a bio that isn't blank. Favorite chats don't count. A "Favorite Community Chats" section shows "None yet" when empty. OwnProfileStateTest covers each combination.
  • Edit Profile (frame 13). The copy is now "Add cover photo" and "Add profile photo". Username is a plain row with the current handle. Tapping it below the balance minimum shows "$100 Balance Required" with Add Money (PresentDepositOptions(USERNAME_SHORTFALL)) and Dismiss.

Behaviour to check in review:

  • The $100 comes from the usernameMinBalance user flag, via usernameGate(), not a client constant. A zero or unresolved minimum opens the username editor with no modal.
  • A user who already chose a handle skips the gate. Only an auto-assigned handle under the minimum sees the modal.
  • title_featuredGroups now reads "Favorite Community Chats" and its placeholder "Add chats". value_featuredGroupCount still reads "N groups".
  • The accent follows Material You, so it's the wallpaper's primary colour rather than a fixed blue. On a stock emulator that renders as #b0c6ff.
  • If loading favourites fails, the You tab hides the section instead of showing "None yet".

A new account finishing onboarding now opens on Chats, where a cold
launch and a sign-in already open, instead of Wallet (node 12527:81350).
The permissions phase releases to launchRoute in every case.

AppRoute.OnboardingFlow.newAccount existed only to pick Wallet for that
release, so it goes. homeRoute stays Wallet as the base for launch
deeplinks. OnboardingFlowScreenTest renders the permissions phase and
asserts the stack ends as [Tabs.Chats]; it fails if the landing reverts
to homeRoute. The create_account Maestro subflow now waits for
chats_screen.
Frame 11 (node 12527:81782) drops the new-user tutorial card from the
wallet. The "Send Your First Tip" checklist and its "Scan a Profile
Card" item are gone; the Add Money row stays and hides once money has
been added, the same signal that brings in the wallet tiles.

Tipping no longer feeds the wallet, so WalletViewModel drops its
ChatCoordinator dependency and the balance module drops shared:chat.
Frame 12 (node 12527:81838) drops "Claim your username" from the You tab
and makes the primary button carry the nudge. Username stays settable
from Edit Profile.

The button reads "Complete Your Profile" in the dynamic accent the
currency creator uses until the profile has a photo, a cover and a bio
(isProfileComplete), then "Edit Profile" in the usual gray. Favorite
chats are not required. The favorite community chats section now draws
a "None yet" body when empty, but only once a read for the current
username has succeeded, so an account with favorites does not flash it.

The username progress card, its balance gate and ClaimUsername event
leave MenuScreenViewModel with the link.
Frame 13 (node 12527:81886) replaces the "Claim your username" prompt
with a Username row showing the current @handle, and rewords the photo
actions to "Add cover photo" and "Add profile photo" on this screen
only; group editing keeps its labels.

Tapping Username while the handle is not one the user chose and the
balance is under the minimum shows "$100 Balance Required" with Add
Money and Dismiss. The amount is the existing usernameMinBalance user
flag, formatted for the viewer, not a constant. Otherwise the tap opens
the username step as before. isUsernameBalanceRequired holds the rule
and is unit-tested.
… tab

Frame 12 has no rule above the section, and iOS already removed it. The
divider stays on other people's profiles, where FeaturedGroupsSection is
also used.
@github-actions github-actions Bot added the type: feature New functionality label Oct 27, 2026
@bmc08gt
bmc08gt merged commit 473d671 into code/cash Oct 27, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant