Skip to content

feat(chat): rebuild the group profile on the profile refresh - #995

Merged
bmc08gt merged 2 commits into
refactor/profile-header-render-inputsfrom
feat/group-profile-refresh
Oct 6, 2026
Merged

bmc08gt merged 2 commits into
refactor/profile-header-render-inputsfrom
feat/group-profile-refresh

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator

Rebuilds ChatProfileScreen on the profile-refresh components, per the group profile section of the spec (docs/specs/group-profile-refresh.md). Stacked on refactor/profile-header-render-inputs.

Layout: profile header (cover, group picture, title, description), Chatting grid, Balance Requirements card, one pinned button, and Leave Chat as a text action under it.

The pinned button comes from the ConversationGate verdicts plus membership:

  • non-member, join minimum met → Join
  • non-member, join minimum unmet → Buy $X of to Join
  • member, chat minimum unmet → Buy $X of to Chat
  • otherwise → Open Chat

It does not use ConversationGatePresentation, which ignores membership and would ask a member who dropped under the join minimum to buy in to join. The Buy button shows the shortfall, and the line above it shows the full requirement (node 10913:282). Non-balance blocks (staff only, creator only) show no button to non-members, same as ConversationGatePanel.

Balance Requirements: Chat falls back to the Join minimum when the group sets no speaker minimum. The card is hidden when neither row is set.

Chatting grid: shows the SampleChatters result as returned, with the host first and a wave badge. There's no per-chatter GetProfile. The grid isn't fetched for private groups (the RPC is denied) and is hidden when the sample is empty.

Moved: Invite, Mute, Report and Encryption are now in the ⋯ menu. Edit is an "Edit Group" capsule. Share opens ProfileShareSheet with Share on Flipcash and Copy Link only. ProfileShareSheet and ProfileEditCapsule take their titles, and the defaults keep the You tab and user profile unchanged. ChatMuteRow and ReportRow had no other callers and are removed.

Tests: GroupProfileStateTests covers the CTA states, the Chat→Join fallback, the shortfall, and grid visibility. The gate test's holdings stub moved to TestSupport/ so both suites share it. No UI test referenced the group profile.

…tles

The group profile needs "Share Group" with a "Share on Flipcash" row, and an
"Edit Group" capsule. Both default to today's strings, so the You tab and the
other-user profile don't change.
The group profile now uses the profile header (cover, group picture, title,
description), then a Chatting grid, a Balance Requirements card, and one
pinned button from the gate verdict: Join, Buy $X of <token> to Join,
Buy $X of <token> to Chat, or Open Chat. The Buy button names the shortfall;
the line above it names the full requirement.

The button reads the ConversationGate verdicts with membership rather than
ConversationGatePresentation, which ignores membership and would ask a member
who fell under the join minimum to buy in to join a group they're already in.

The Chat row falls back to the Join minimum when the group sets no speaker
minimum, since speaker rules equal listener rules when none are set. The
Chatting grid shows only what SampleChatters returns, and is hidden for a
private group (the RPC is denied there) and for an empty sample.

Invite, Mute, Report and the encryption info move to the ⋯ menu; Edit becomes
an "Edit Group" capsule. Leave Chat sits under the button and keeps the
existing confirmation. ChatMuteRow and ReportRow had no other callers and are
removed.
@bmc08gt bmc08gt self-assigned this Oct 6, 2026
@bmc08gt
bmc08gt added this pull request to stack #997 October 6, 2026 21:56
@bmc08gt
bmc08gt merged commit 11b1b3d into main Oct 6, 2026
3 checks passed
bmc08gt added a commit that referenced this pull request Oct 6, 2026
…-groups

* origin/main:
  feat(chat): rebuild the group profile on the profile refresh (#995)
  refactor(profile): key the profile header and cover on what they render (#993)
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