Skip to content

Feature/convo v3 pt2#2027

Merged
ThomasSession merged 26 commits intodevfrom
feature/ConvoV3-pt2
Mar 4, 2026
Merged

Feature/convo v3 pt2#2027
ThomasSession merged 26 commits intodevfrom
feature/ConvoV3-pt2

Conversation

@ThomasSession
Copy link
Collaborator

More features for our compose conversation v3

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR continues the Compose-based “Conversation v3” rollout by adding a Paging-backed conversation list, refactoring message rendering into grouped content blocks, and introducing a new mention/link formatting pipeline plus a debug-only v2/v3 switch.

Changes:

  • Added Paging 3 + LazyPagingItems to render conversation items (messages, date breaks, unread marker) in Compose.
  • Refactored message UI into MessageViewData + MessageContentGroup/MessageContentData and added/updated message content composables (quote/link/media/audio/document/community invite/control).
  • Introduced MessageTextFormatter + MessageText for mention/link annotations and mention pill background rendering; added debug app-bar action to switch between v2 and v3.

Reviewed changes

Copilot reviewed 29 out of 29 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
gradle/libs.versions.toml Adds Paging library version entries.
app/build.gradle.kts Adds Paging dependencies for v3 conversation list.
app/src/main/java/org/thoughtcrime/securesms/ui/theme/Dimensions.kt Adds maxMessageWidth used to cap message width on larger screens.
app/src/main/java/org/thoughtcrime/securesms/ui/components/ConversationAppBar.kt Adds debug-only action to switch conversation version; updates API signature.
app/src/main/java/org/thoughtcrime/securesms/onboarding/landing/Landing.kt Updates onboarding preview bubble rendering to new v3 message model.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/message/MessageText.kt New rich text composable for mentions + optional link handling + mention pill background.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/message/MessageQuote.kt Moves into .message package and updates to new quote/message model + MessageText.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/message/MessageMedia.kt Updates media rendering API to new message model and updates previews.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/message/MessageLink.kt Moves into .message package and updates previews/content wiring.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/message/MessageEmojiReactions.kt Renames expand/show-less callbacks to clearer names and updates call sites.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/message/MessageEffects.kt Minor refactor of highlight drawing implementation (Paint import).
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/message/DocumentMessage.kt Refactors document UI/data model to fit new message content model.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/message/ControlMessage.kt Adds control message composable for centered/system-style messages.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/message/CommunityInviteMessage.kt Adds community invite message UI.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/message/BaseMessage.kt Major refactor: message layout selection, grouped content rendering, new data model types.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/message/AudioMessage.kt Refactors audio UI/data model to fit new message content model.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/conversation/ConversationScreen.kt New Compose conversation screen using Paging + reverse layout.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/conversation/ConversationElements.kt Adds date break + unread marker composables.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/ConversationScreen.kt Removes old placeholder v3 conversation screen.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/MessageTextFormatter.kt New formatter producing AnnotatedString link + mention annotations (UI-agnostic).
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/ConversationV3ViewModel.kt Adds Paging-backed conversation items flow + invalidation on DB change notifications.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/ConversationV3NavHost.kt Wires v3 screen move + exposes switchConvoVersion callback.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/ConversationPagingSource.kt New paging source reading conversation records and mapping to UI items.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/ConversationDataMapper.kt New mapper from DB records to ConversationItem + v3 message view-data model.
app/src/main/java/org/thoughtcrime/securesms/conversation/v3/ConversationActivityV3.kt Adds v3→v2 switching behavior on request.
app/src/main/java/org/thoughtcrime/securesms/conversation/v2/utilities/TextUtilities.kt Removes unused helper methods.
app/src/main/java/org/thoughtcrime/securesms/conversation/v2/utilities/MentionUtilities.kt Extracts a shared mention parse/substitute core for reuse by v3 formatter.
app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/QuoteView.kt Adjusts quote author text style.
app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt Adds v2→v3 switching behavior via app bar.
Comments suppressed due to low confidence (2)

app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/message/BaseMessage.kt:281

  • MessageText is always given a non-null onUrlClick here, which enables underlined/clickable link rendering, but the handler is currently a no-op. This creates a UX where links look interactive but do nothing. Until link handling is implemented, pass onUrlClick = null (to strip link annotations) or wire it to the actual URL-opening behavior.
    app/src/main/java/org/thoughtcrime/securesms/conversation/v3/compose/message/MessageMedia.kt:55
  • loading is passed into MediaMessage but is not used anywhere in the composable. If the overall loading state is no longer needed, remove the parameter; otherwise, use it to drive UI (e.g., overlay/progress) so callers aren’t forced to provide a value that has no effect.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@ThomasSession ThomasSession merged commit d56e812 into dev Mar 4, 2026
5 checks passed
@ThomasSession ThomasSession deleted the feature/ConvoV3-pt2 branch March 4, 2026 01:53
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.

3 participants