Skip to content

feat(messaging): Overhaul message bubbles and add actions#4206

Merged
jamesarich merged 9 commits into
mainfrom
feat/message-ui
Jan 14, 2026
Merged

feat(messaging): Overhaul message bubbles and add actions#4206
jamesarich merged 9 commits into
mainfrom
feat/message-ui

Conversation

@jamesarich

@jamesarich jamesarich commented Jan 13, 2026

Copy link
Copy Markdown
Collaborator

This PR introduces a significant visual and functional overhaul to the messaging interface.

Key changes include:

  • Message Bubbles: Messages from the same sender are now grouped into continuous bubbles, improving readability.
  • Message Actions: Long-pressing a message now opens a bottom sheet with actions like Reply, Copy, Select, and Delete. It also includes a new quick reaction bar.
  • Quick Emojis: The action sheet displays a row of frequently used emojis for quick reactions.
  • Accessibility: Added content descriptions to message items for better screen reader support.
  • UI/UX Refinements:
    • Unified the message item composable.
    • Message reactions are now displayed below the message bubble.
    • Improved layout and padding for a cleaner look.

Before:

image

After:

image Screenshot_20260113_171743 Screenshot_20260113_171754

- Remove extraLarge shape from message card
- Adjust padding for message content and row layout
- Remove redundant shape property from Card
- Apply border without shape for BEL messages

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit modifies the UI to improve the message list's readability.

When multiple messages are sent consecutively by the same user, the user's name and avatar are now only displayed on the most recent message in the sequence. This change creates a more condensed and cleaner visual appearance for message bubbles from the same sender.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
…apes

This commit introduces several UI enhancements to the messaging feature:

- Adds a `MessageActionsBottomSheet` that appears on a long press of a message item, providing options to Reply, React, and Copy.
- Implements `getMessageBubbleShape` to create chat bubble-style shapes for messages, connecting them visually if they are from the same sender consecutively.
- Refactors `MessageItem` to use the new bubble shapes and integrate the bottom sheet on long-click.
- Adds `MessageStatusIcon` to visually represent the delivery status of outgoing messages.
- Moves reaction rows to be overlaid at the bottom of the message bubble for a cleaner look.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit introduces a quick emoji reaction feature to the messaging screen.

When a user long-presses a message, a bottom sheet now appears with a row of frequently used emojis for quick reactions. It also includes an option to open a full emoji picker for more choices.

The list of frequent emojis is sourced from user preferences (`CustomEmojiPrefs`) and defaults to a standard set if no preferences are found. The UI has been updated to accommodate this new emoji row within the message actions bottom sheet.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit introduces the ability to select and delete individual messages from the message actions menu.

- Adds "Select" and "Delete" options to the `MessageActionsBottomSheet`.
- Wires up the `onSelect` and `onDelete` actions in `MessageItem` and `MessageListPaged`.
- Adds a new "select" string resource.
- Disables the long-press action menu when in selection mode.
- Removes redundant comments from `MessageBubble.kt`.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Refactored the styling logic for `MessageItem` to improve readability and maintainability.

- Extracted the calculation for the container color's alpha value.
- Moved the shape definition for message bubbles and border effects to be defined once and reused.
- Simplified the `containerColor` assignment logic.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit refactors and cleans up various components within the messaging feature.

- Removes unnecessary modifiers and lambda trailing commas.
- Defines constants for magic numbers (`MAX_EMOJI_ROW_SIZE`, alpha values).
- Simplifies code by removing redundant `.copy()` calls and extra lines.
- Updates copyright year.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Adds `contentPadding` to the `LazyColumn` in `MessageListPaged` to prevent the last message from being obscured.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
@github-actions github-actions Bot added the enhancement New feature or request label Jan 13, 2026
@codecov

codecov Bot commented Jan 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 0.00%. Comparing base (99e4204) to head (252553c).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@          Coverage Diff          @@
##            main   #4206   +/-   ##
=====================================
  Coverage   0.00%   0.00%           
=====================================
  Files          3       3           
  Lines         23      23           
  Branches       7       7           
=====================================
  Misses        23      23           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@jamesarich jamesarich added this pull request to the merge queue Jan 14, 2026
Merged via the queue into main with commit 5d0d525 Jan 14, 2026
10 checks passed
@jamesarich jamesarich deleted the feat/message-ui branch January 14, 2026 03:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant