Repository navigation
feat(history): show boosted reactions in transaction history - #1858
Merged
Merged
Conversation
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.
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.
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
marked this pull request as ready for review
October 26, 2026 18:48
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 ontoActivityFeedNotification, butMetadataMapperdropped it before it reached Room, so no screen could read it.Persistence.
boostedReactionis a nullable, defaulted field onMessageMetadata.DirectlySentCryptoandMessageMetadata.ReceivedCrypto, filled inMetadataMapper. It lives in the existingmetadataJSON column, so there is no schema change or version bump, and rows written before this change decode withnull. Class names are unchanged, soMessageDao'sLIKEfilters still match.Row titles. When a boost is set, it replaces the tip/sent/received title (it wins over the tip check):
Boosted 🔥 for SallyBoost 🔥 from SallyBoosted 🔥 in Design TeamBoosted 🔥Boost 🔥 receivedThe 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 toBoosted {emoji}. Date, amount and avatar are unchanged. The legacy per-mintFeedItemrow 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 routeDeeplinkType.ChatMessagebuilds. 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.