Skip to content

feat(menu): make the You tab your own profile - #1691

Open
bmc08gt wants to merge 15 commits into
feat/profile-refresh-settingsfrom
feat/profile-refresh-own-profile
Open

bmc08gt wants to merge 15 commits into
feat/profile-refresh-settingsfrom
feat/profile-refresh-own-profile

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator

Second slice of the profile refresh, matching code-payments/code-ios-app#986 and the header and share sheet from #987–#988: the You tab is now your own profile. Stacked on #1689.

You tab (features/menu, Figma node 10961:314)

  • Cover banner under the status bar, avatar overlapping it, name, handle and bio, then a stats card: Minimum to Chat and Date Joined.
  • Edit Profile and Share are flat 38dp buttons. Edit Profile opens Settings for now; the Edit Profile screen replaces that in a later slice.
  • The Settings gear is a frosted CircularIconButton in the trailing bar slot, blurring the cover behind it.
  • The unclaimed state keeps its add-your-name prompt, and UsernameProgressCard stays.
  • Removed: the expanding full-screen card, the tip link row, the Share/Download tiles and the "Finish Your Profile" checklist, with their tests and strings.

Minimum to Chat

  • TipPaymentDelegate.minimumToOpenDmWith is renamed startChattingFee. The stats card and the chat screen read the same value: your own fee converted to your currency, else the regional default.

Share sheet and profile card

  • Share opens a sheet with Share Profile, Show Profile Card and Copy Link. Each row runs after the sheet has closed, and a second tap while it closes is ignored.
  • Show Profile Card is its own route, Menu.ProfileCard. Download sits where the gear was, in the same frosted button, and Close is pinned at the bottom.
  • The card springs from 55% to full size while the backdrop fades in, and the screen fades out on close with no slide.

Shared pieces (shared/common-ui/.../profile)

  • ProfileCover, ProfileHeader, ProfileStatsCard, ProfileActionButton, ProfileStatusChip and ProfileShareSheet take what they draw (a MediaItem cover, an avatar slot, title, subtitle and body, the share rows), not a user ID, so the group profile can reuse them.
  • ChatMuteStatusChip now draws with ProfileStatusChip.

Design tokens

  • Spacing comes from the 5dp grid, so a few gaps are 1–2dp off iOS. The fixed sizes (cover 214, avatar 84, buttons 38, stats card 84) are carried over in dp, and the stats card and Edit Profile button use minimum heights so large text doesn't clip.

@bmc08gt bmc08gt self-assigned this Oct 6, 2026
@github-actions github-actions Bot added type: feature New functionality area: payments Payments, transfers, intents, billing area: ui Compose UI, theme, components, resources and removed type: feature New functionality labels Oct 6, 2026
@github-actions github-actions Bot added the type: feature New functionality label Oct 6, 2026
@bmc08gt
bmc08gt added this pull request to stack #1696 October 7, 2026 01:28
bmc08gt added 13 commits October 6, 2026 21:54
ProfileShareSheet draws a title, a subtitle and one row per ProfileShareRow. The caller picks the rows, hosts the sheet and runs the chosen action after it dismisses.
The You tab now opens on the shared profile header with Edit Profile and
Share, then the stats card, instead of the tip card with link and tiles.
Share opens a sheet with Share Profile, Show Profile Card and Copy Link;
the card moves to its own full-screen route that keeps Download. Removes
the expansion machinery, the profile checklist and their tests.
The card screen dropped the opaque fill the You-tab card used, so the card
read as a faint outline on the flat backdrop, and Close sat clipped against
the right edge. Name the flattened tone TipCardFlattened in bills, provide it
on the card screen, and host Close in AppBarWithTitle like other full-screen
screens.
Both now use the app's CircularIconButton in an untitled AppBarWithTitle, so they
sit where other tabs keep their trailing bar button and blur the cover or card
behind them.
…es, localize join date

Ignore a second share-sheet row tap while the first is dismissing, show the
profile card's Download button only once the card exists, build the joined
label from the locale's MMMMy pattern, let the profile stats card and action
button grow with font scale, and drop the unused ProfileTutorial items,
title_finishYourProfile and ic_chevron_down_medium.
The buttons used the action colour (Gray50) at 10%, which barely shows on
the dark background. The design calls for a 10% white fill, which is White10.
The stats card centred its two stats vertically and then padded them from
the top, so the captions sat well below the 16pt inset iOS uses. Pin the
card to 84dp and let each stat fill that height, top-aligned.
@bmc08gt
bmc08gt force-pushed the feat/profile-refresh-own-profile branch from 93311f1 to b4e5161 Compare October 7, 2026 01:56
iOS YouScreen draws the header for every account and puts the claim
prompt where the stats card goes. Android dropped the header, so an
account with no name lost its cover, avatar and Edit Profile button.
Share stays hidden until there is a name to share.

ProfileHeader also gets iOS's 8pt gap (staticGrid.x2) between the
action row and the title, and takes a null title for the unnamed case.
…s iOS does

iOS #986 replaced the You tab's username progress card with a one-line
"Claim your username ›" under the handle, shown while there is no handle
or only an auto-assigned one. The tap keeps the balance gate. The card
component and its two strings are gone; the progress state stays, since
the gate reads it.

The profile card raises a screen dimmer than 0.4 to 0.6 while it is up,
as iOS's ProfileCardScreen does, through the KeepScreenOn helper the
scanner already uses.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: payments Payments, transfers, intents, billing area: ui Compose UI, theme, components, resources type: feature New functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant