Skip to content

feat(profile): other-user profile with overflow menu and pinned chat action - #987

Merged
bmc08gt merged 13 commits into
mainfrom
feat/profile-refresh-other-profile
Oct 6, 2026
Merged

bmc08gt merged 13 commits into
mainfrom
feat/profile-refresh-other-profile

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Stacked on #986.

Adds the profile you see for someone else (Figma node 10990:494). The pinned button reads "Send $X to Start Chatting" before a DM exists, "Open Chat" once it does, and "Unblock" if you've blocked them. The ⋯ menu has Mute Notifications (the existing MuteChatSheet), Report, and Block/Unblock. Blocked and Muted badges sit in the action row next to Share, so toggling either doesn't move the header.

Also in here, shared with the You tab:

  • The top scroll-edge blur stays hidden until the banner scrolls under the bar. Before that, it drew a hard line over the cover at rest.
  • The bio uses appTextMessage. appTextBody is Avenir Regular, which reads as a different typeface next to the Medium and Demi weights everywhere else.
  • Toasts clear the pinned button. A screen can declare a bottom clearance with toastClearance(_:), and without a tab bar the toast rises a fixed 56pt instead of sliding up from the screen edge.

bmc08gt added 13 commits October 6, 2026 16:11
Push the new chat when the DM record lands before the start-chatting sheet
dismisses, and only when the profile is still in front. Open Chat from a DM
returns to it instead of pushing a copy. Unmute from the menu reports errors
and analytics like the mute sheet, Start Chatting runs the give-cash gate in
both branches, and the toolbar buttons get accessibility labels.
The profile screens had the right controls in a centred, inset-card
layout that didn't follow the design. Follow nodes 10961:314 and
10990:494 instead: a full-bleed 214pt banner (flat #323234 when there is
no cover), a left-aligned 84pt avatar overlapping it, Edit Profile and
Share in the avatar row, left-aligned name, handle and bio, and a
two-column stats card with labels above values.

Share opens a sheet with Share Profile, Show Profile Card and Copy Link
in place of the menu. The other-user profile draws its back and overflow
buttons over the banner with no navigation bar, and the pinned button is
white over a fade. The Finish Your Profile card and the card-colour
cover fallback are gone, with their tests.
Move the You tab's gear and the other-user profile's back and overflow
controls into the navigation bar, so the app-wide soft scroll edge draws
the top fade. Drop the "You" title, the cover's dark overlay and the
pinned button's gradient; the pinned button now sits in a scroll edge bar.

Replace Mute/Unmute in the overflow menu with one "Mute Notifications"
entry that opens MuteChatSheet, whose "Never" option unmutes.

Top-align the stats card labels, and left-align the share sheet's
"Share User Profile" title with a shorter detent.
The profile screens matched Figma pixel values: ten font sizes, four RGB
colours and one-off radii and paddings that no other screen uses. Swap
them for the app* font tokens, the textMain/textSecondary/backgroundRow
colours, glass buttons, and the PartialSheet + ChatActionRow sheet that
Mute Notifications already uses.
… the bar

At rest the iOS 26 soft edge only darkened the cover banner and left a hard band where it stopped.
Under the handle they took the bio's spot. The action row's height comes
from the share button, so a badge appearing on mute or block no longer
moves the content below it. The stats card uses Metrics.boxRadius like the
app's other cards.
Share and Edit Profile now match the design (node 10961:323, 10961:335):
38pt tall, a 22pt share glyph, 18pt side padding on Edit Profile, and a
flat fill at 10% of the action colour. Over the #19191A background that
is the design's #303031. On glass the circle rendered at 34pt and the
capsule at 31pt.
appTextBody is Avenir Regular, a weight nothing else in the app uses, so
the bio read as a different typeface next to the header. Use
appTextMessage, the Medium weight chat bubbles use.
The profile hides the tab bar, so the toast host drew 12pt above the bottom
edge, over the pinned button. A screen can now mark a bottom bar with
toastClearance(_:); the host measures it and keeps the toast above it while
it is on screen.
The entrance moved the toast by its own padded height, so a toast raised
over the profile's pinned button travelled up from the screen edge past
the button. It now rises the 56pt a toast 12pt off the edge always did.
@bmc08gt
bmc08gt changed the base branch from feat/profile-refresh-own-profile to main October 6, 2026 20:11
@bmc08gt
bmc08gt force-pushed the feat/profile-refresh-other-profile branch from c84475e to 16bc0a4 Compare October 6, 2026 20:12
@bmc08gt
bmc08gt merged commit 3bc88e9 into main Oct 6, 2026
2 of 3 checks passed
@bmc08gt
bmc08gt deleted the feat/profile-refresh-other-profile branch October 6, 2026 23:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant