Skip to content

feat(menu): add the Finish Your Profile checklist to the You tab - #1346

Merged
bmc08gt merged 9 commits into
code/cashfrom
feat/you-tab-finish-profile
Aug 27, 2026
Merged

feat(menu): add the Finish Your Profile checklist to the You tab#1346
bmc08gt merged 9 commits into
code/cashfrom
feat/you-tab-finish-profile

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

The You tab had no prompt to finish setting up a profile. This adds the "Finish Your Profile" checklist from node 9641:16758, between the tip card's "Full Screen" caption and the tip-link row.

It reuses the wallet tab's NewUserTutorial rather than adding a second checklist component. To make that work the component moved from :apps:flipcash:features:balance to :apps:flipcash:core-ui, and TutorialItem split into two nested sealed families — TutorialItem.Wallet for the wallet milestones, TutorialItem.Profile for these two steps — so each call site's when stays exhaustive. NewUserTutorial is now generic over T : TutorialItem. The convention plugin already puts core-ui on every feature module, so no build files changed.

The photo row is live: it pushes AppRoute.UpdateUserProfile with includeName = false, includePhoto = true, landing straight on the picker. Completion comes from profile.profilePicture != null, so the row shows a green check and stops responding once a photo is set.

The minimum-tip row is drawn but inert. Nothing backs a user-set minimum tip on either platform yet; it's rendered because node 9641:17019 shows the counter as 1/2 with both rows present. That's separate scope.

The photo step is retitled everywhere it appears, including onboarding: the title moves into the app bar as "Set Profile Picture", the body title and subtitle are gone, and the primary button reads "Save" instead of "Next".

…orialItem

The You tab needs the same checklist card the wallet already draws, and a
feature module cannot reach another feature's internal package. core-ui is
where shared composables live and the convention plugin already puts it on
every feature module, so the move only changes the package. The strings and
drawables the component reads stay in :apps:flipcash:core, which core-ui
depends on, so the R import is unchanged.

TutorialItem gains nested Wallet and Profile families and the composable gains
a type parameter, so each screen's when stays exhaustive over the items it can
actually be given. The card radius moves to shapes.extraSmall, which is the
6 dp the design asks for.
Copy from node 9544:18140. The people-in-a-circle glyph has no equivalent in
the repo, so it comes from the design export rather than being hand-drawn.
ProfilePicture is live. MinimumTip is drawn and inert — nothing backs a
user-set minimum yet on either platform — so the checklist reads 1/2 at best
and the card stays put, which is the state node 9641:17019 draws.
UserProfile.profilePicture is the completion signal; null while the profile is
unresolved so the card is never drawn against a guess.
The photo row reuses AppRoute.UpdateUserProfile with includePhoto only, which
buildUpdateUserProfileStack reduces to a single UpdateProfileStep.Photo.
Sits between the full-screen caption and the tip link, per node 9641:17031.
Per node 9641:16758 the title moves into the app bar and the button reads Save.
Applied to every entry into the step, onboarding included, so the screen does
not read differently depending on how it was reached.
@bmc08gt bmc08gt self-assigned this Aug 27, 2026
@github-actions github-actions Bot added the type: feature New functionality label Aug 27, 2026
Four gaps against node 9641:17022 showed up once the card was on a device:

- No divider between the checklist and the link row (node 9641:17048).
- Rows sat 40dp apart because each row carried the 20dp inset itself. The
  padding now belongs to the box, and the rows are spaced by one step.
- The title rendered at 20sp/W500: `screenTitle` is overridden app-wide in
  FlipcashDesignSystem, and the design asks for Avenir Demi 18.
- The gap under Full Screen was 65dp against roughly 32 in the design.

The row padding move shrinks the ripple to the 40dp content box, still above
the minimum touch target. NewUserTutorial is shared, so the wallet tab's
tutorial card picks up the same spacing and title size.
The description's line height already separates it from the title, so the extra
5dp only pushed the two rows apart.
@bmc08gt
bmc08gt merged commit 51d914d into code/cash Aug 27, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feature New functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant