Rewrite Conversation screen with Kotlin and Compose#109
Rewrite Conversation screen with Kotlin and Compose#109RankoR wants to merge 94 commits intoGrapheneOS:mainfrom
Conversation
There was a problem hiding this comment.
Looks good so far, haven't looked too deeply at the code yet. Some things from testing it:
-
One bug I've noticed is that if a message contains a hyperlink, selecting the message makes the hyperlink invisible (videos below show this)
-
I think we should hide the number/name on the incoming message bubbles if the conversation is a 1-1 thread
-
Message details dialog popup looks untouched (e.g. doesn't follow dark theme)
-
I didn't intentionally set it up this way, but my colors for Material You under OS Settings > Wallpaper & style > Colors were setup like this:

With these colors, the contrast for selected outgoing messages is hard to see in dark mode. Also link color contrast issue makes links hard to see (link is https://example.com):
messages-select-contrast.mp4
-
I can't long press a message containing just a link. Generally, long presses don't select when the pointer is over a link. I think ideally long pressing a link should just select the message instead of opening the link as well; this matches the old Messages behavior
messages-link-select.mp4
-
Showing the phone number in the top app bar is debatable as the old Messages app doesn't do it. Google Messages and Signal also hides the number in the app bar. My preference is that we don't show it
As a side note, Signal used to also show the number at the top, and this also used to be a talking point for many users e.g. https://community.signalusers.org/t/option-to-hide-contact-phone-number-on-the-top-of-the-chat/4455/7. Signal finally hid the number at the top in https://community.signalusers.org/t/option-to-hide-contact-phone-number-on-the-top-of-the-chat/4455/38
|
I got interested in the PR and found a bug:
return conversation.selfId.orEmpty()
Suggested fix Honor the Optional defence‑in‑depth in if (selfParticipantId.isBlank()) return message |
First (of 3) PR with Conversation screen rewritten with Kotlin and Compose.
I've split it into 3 PRs:
@PreviewsThis split is required because it's a very large rewrite, so it makes it easier to review. I will create the remaining two after this one is merged.
For reference, all changes together are in https://github.com/RankoR-GOS/Messaging/commits/task/coversation-compose.
Here's a demo (the lags are coming from my emulator, not from the app itself):
messages.mp4