Skip to content

fix(chat): refetch and label senders with no display name - #1612

Merged
bmc08gt merged 1 commit into
code/cashfrom
fix/chat-unnamed-sender
Sep 29, 2026
Merged

bmc08gt merged 1 commit into
code/cashfrom
fix/chat-unnamed-sender

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

A sender with no display name showed as a blank row with an empty avatar in the ALL chat, and their profile opened with no name. The account behind it was created in April, before onboarding asked for a name, so the server has none for it.

Two client problems made that worse:

  • Any cached profile counted as resolved, so a sender whose cached name was blank was never fetched again.
  • The profile screen fetched the profile but kept only its join date, and drew the name and picture from the blank cached copy.

Changes:

  • Refetch a sender whose cached name is blank, once per session, for message bubbles and reply quotes.
  • Fall back from display name to @handle to "Flipcash User" on the name line, reply quotes, the profile title and the block prompt. This matches iOS's ConversationController.fallbackCounterpartName. The avatar keeps the plain gradient, since initials from the label would draw "FU" on every nameless sender.
  • The profile screen uses the fetched profile, and keeps the cached one if the fetch fails.
  • Save the handle when the sender resolver stores a fetched profile.
  • Skip roster members with no name, picture or handle during a member-list sync, so the sync can't erase a profile that was just fetched.

iOS counterpart: code-payments/code-ios-app#901. The checklist step that asks these accounts for a name is in #1613.

A sender whose cached profile had no name kept a blank row and an empty
avatar in the transcript. Any cached row counted as resolved, so it was
never fetched again, and the name line was skipped when the name was blank.
Accounts created before the onboarding name step have no display name on
the server, so this shows up in the ALL chat.

- Refetch a sender whose cached name is blank, once per session, for
  bubbles and reply quotes.
- Fall back from display name to handle to "Flipcash User" on the name
  line, reply quotes, the profile title and the block prompt, matching
  iOS's ConversationController.fallbackCounterpartName. The avatar keeps
  the plain gradient instead of drawing initials from the label.
- The profile screen uses the fetched profile rather than only its join
  date, and keeps the cached one if the fetch fails.
- Store the handle when the resolver saves a fetched profile.
- Skip roster members with no name, picture or handle so a member-list
  sync cannot erase a profile that was just fetched.
@bmc08gt bmc08gt self-assigned this Sep 29, 2026
@github-actions github-actions Bot added the type: fix Bug fix label Sep 29, 2026
@bmc08gt
bmc08gt merged commit 16d3deb into code/cash Sep 29, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: fix Bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant