Skip to content

feat(history): show boosted reactions in transaction history - #1858

Merged
bmc08gt merged 4 commits into
code/cashfrom
feat/boosted-reaction-history
Oct 26, 2026
Merged

bmc08gt merged 4 commits into
code/cashfrom
feat/boosted-reaction-history

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

A payment that boosted a reaction showed in history as an ordinary "Sent to Sally" / "Received from Sally" row. The server has tagged these payments with BoostedReaction (chat_id, message_id, emoji) since flipcash2 0.20.0, and the app parsed it onto ActivityFeedNotification, but MetadataMapper dropped it before it reached Room, so no screen could read it.

Persistence. boostedReaction is a nullable, defaulted field on MessageMetadata.DirectlySentCrypto and MessageMetadata.ReceivedCrypto, filled in MetadataMapper. It lives in the existing metadata JSON column, so there is no schema change or version bump, and rows written before this change decode with null. Class names are unchanged, so MessageDao's LIKE filters still match.

Row titles. When a boost is set, it replaces the tip/sent/received title (it wins over the tip check):

Case Title
Sent, name resolved Boosted 🔥 for Sally
Received, name resolved Boost 🔥 from Sally
Sent, split boost, chat known Boosted 🔥 in Design Team
Sent, no name or chat Boosted 🔥
Received, no name Boost 🔥 received

The name comes from the existing counterparty resolution. The chat name for split boosts is read from the local chat store by chat_id, with no network fetch; if the chat is not stored the row falls back to Boosted {emoji}. Date, amount and avatar are unchanged. The legacy per-mint FeedItem row is untouched.

Detail button. When a boost is set, the chat button reads "View Message" and opens AppRoute.Messaging.Chat(ChatIdentifier.ByChatId(chatId), jumpToMessageId = messageId), the same route DeeplinkType.ChatMessage builds. It also shows on a split boost, which has no counterparty and previously had no button. Without a boost the button is unchanged.

Stale target. No new handling. If the chat is not in the local store, View Message opens an empty chat screen with a placeholder avatar and no header or messages, which is what the existing chat-message route does for an unknown chat.

Detail header. The name stays the large heading, as it is today, and a boost's sentence goes in the subtitle line under it: "You boosted 🔥" (sent) or "Boost 🔥 received", with "in {chat}" when the chat is a stored group. A one-payee boost keeps the counterparty's name; a split boost shows the stored chat's name as the heading with "You boosted 🔥" under it, and with no stored chat the sentence alone is the heading. A counterparty that has not resolved never borrows the chat name. The boost wins over the tip heading, and the receipt card has no new rows. Chat names come from the existing observeMemberTitles() lookup, with no new module edge and no network fetch.

Keep BoostedReaction on MessageMetadata (DirectlySentCrypto, ReceivedCrypto) so it
survives the local database, give boosted payments their own row titles, and add a
View Message button on the detail screen that opens the boosted message.
@bmc08gt bmc08gt self-assigned this Oct 26, 2026
@github-actions github-actions Bot added type: feature New functionality area: payments Payments, transfers, intents, billing and removed type: feature New functionality labels Oct 26, 2026
A boost is headed "You boosted" or "Boost received", the counterparty or a split
boost's chat name moves under it, and the receipt gains Reaction and Chat rows after
the date. The chat comes from the local store only; a DM is named for its partner.
@github-actions github-actions Bot added the type: feature New functionality label Oct 26, 2026
The counterparty (or a split boost's chat) stays the large heading and the boost
heading moves to the line under it; with no name, "You boosted" is the heading.
…ine under it

The boost verb moves to the subtitle, and the Reaction and Chat card rows
are dropped; the emoji and group now ride in the subtitle sentence.
@bmc08gt
bmc08gt marked this pull request as ready for review October 26, 2026 18:48
@bmc08gt
bmc08gt merged commit 5f25497 into code/cash Oct 26, 2026
5 checks passed
bmc08gt added a commit that referenced this pull request Oct 26, 2026
* commit '5f2549710405c4215ac47fc972e0c3d22f4e8dfb':
  feat(history): show boosted reactions in transaction history (#1858)
  feat(chat): in-app alert for reactions and boosts on your messages (#1857)
  feat(chat): tap-to-show photo viewer chrome with react, reply, save and forward (#1854)

# Conflicts:
#	apps/flipcash/features/messenger/src/main/kotlin/com/flipcash/app/messenger/internal/screens/MessengerScreen.kt
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 type: feature New functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant