Skip to content

Conversation

@caybro
Copy link
Member

@caybro caybro commented Nov 24, 2025

What does the PR do

  • StatusMessageEmojiReactions: update according to the latest Figma designs, simplify the showReactionAuthors() function
  • StatusMessage: disable the hover quick actions on mobile; the context menu works much better and has the same actions (including the emoji quick reactions)
  • StatusTextMessage: make it enabled: false in order to support the long-press context menu on mobile
  • MessageView: streamline context menus opening that works with both mouse and touch
  • WalletAccountHeader: support fallback account icons (non-emojis)
  • RenameAccountModal: fix changing the emoji of an existing wallet account

  • removed some unused properties
  • update and fixed the relevant SB pages
  • do no use hardcoded margins/paddings
  • fix some QML warnings

Fixes #19328
Fixes #19327
Iterates: #19199

BACKPORT_TO: 2.36

Affected areas

Messaging, Account edit

Architecture compliance

Screencapture of the functionality

Emoji reactions:

image image

Mobile screens TBD

Impact on end user

More consistent emojis behavior, improved esp. on mobile

How to test

  • test the chat context menu functionality (mouse, touch)

Risk

  • mid

@caybro caybro requested review from a team, alexjba, micieslak and noeliaSD as code owners November 24, 2025 13:12
@caybro caybro requested review from jrainville and vkjr and removed request for a team and vkjr November 24, 2025 13:12
function onEmojiSelected(emojiText: string, atCursor: bool) {
let emoji = StatusQUtils.Emoji.deparse(emojiText)
popup.contentItem.accountNameInput.input.asset.emoji = emoji
popup.contentItem.accountNameInput.input.asset.emoji = emojiText
Copy link
Member Author

Choose a reason for hiding this comment

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

Fixes changing a wallet account emoji

spacing: Theme.padding

StatusBaseText {
Layout.preferredWidth: parent.width - betaTag.width - parent.spacing
Copy link
Member Author

Choose a reason for hiding this comment

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

betaTag no longer exists

return qsTr("%1 reacted with %2")
.arg(author)
.arg(StatusQUtils.Emoji.fromCodePoint(emoji));
const author = Qt.locale(Qt.uiLanguage).createSeparatedList(listOfUsers) // "a, b, c and d"
Copy link
Member Author

Choose a reason for hiding this comment

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

https://doc.qt.io/qt-6/qlocale.html#createSeparatedList can do a much better job than the custom JS code clutch :)

readOnly: true
selectByMouse: true
selectByMouse: true // applies to mouse only, not touch
enabled: !Utils.isMobile // eats the touch events, thus breaking the context menu since this is an edit (albeit readonly)
Copy link
Member Author

Choose a reason for hiding this comment

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

Visually this is identical but has to be done because we abuse an edit control to display a piece of text

readonly property var format: {
"png": "png",
"svg": "svg"
}
Copy link
Member Author

Choose a reason for hiding this comment

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

Unused; we support and ship SVG only anyway

signal hoverChanged(bool hovered)
signal toggleReaction(string hexcode)

property bool isCurrentUser
Copy link
Member Author

Choose a reason for hiding this comment

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

Unused

@status-im-auto
Copy link
Member

status-im-auto commented Nov 24, 2025

Jenkins Builds

Click to see older builds (83)
Commit #️⃣ Finished (UTC) Duration Platform Result
818d73d #1 2025-11-24 13:18:27 ~5 min macos/aarch64-nwaku 📄log
818d73d #1 2025-11-24 13:18:27 ~5 min macos/aarch64 📄log
✔️ 818d73d #1 2025-11-24 13:21:01 ~8 min tests/nim 📄log
✔️ 818d73d #1 2025-11-24 13:27:20 ~14 min tests/ui 📄log
✔️ 818d73d #1 2025-11-24 13:29:52 ~17 min ios/aarch64 📱ipa
✔️ 818d73d #1 2025-11-24 13:30:27 ~17 min linux/x86_64 📦tgz
✔️ 818d73d #1 2025-11-24 13:34:39 ~21 min linux/x86_64-nwaku 📦tgz
✔️ 818d73d #1 2025-11-24 13:40:13 ~27 min windows/x86_64 💿exe
✖️ 818d73d pr19362 2025-11-24 13:47:20 ~16 min tests/e2e 📊rpt
✖️ 818d73d PR19362 2025-11-24 14:08:46 ~28 min tests/e2e-windows 📊rpt
818d73d #2 2025-11-24 14:15:29 ~9 min macos/aarch64-nwaku 📄log
✔️ 818d73d #2 2025-11-24 14:18:10 ~12 min macos/aarch64 🍎dmg
✔️ 88991abb #1 2025-11-24 13:22:03 ~9 min android/arm64 🤖apk 📲
2103910 #3 2025-11-24 17:47:34 ~5 min macos/aarch64-nwaku 📄log
✔️ 2103910 #2 2025-11-24 17:53:57 ~12 min ios/aarch64 📱ipa
✔️ 2103910 #3 2025-11-24 17:55:54 ~14 min macos/aarch64 🍎dmg
✔️ 2103910 #2 2025-11-24 18:03:45 ~21 min tests/nim 📄log
✔️ 2103910 #2 2025-11-24 18:07:14 ~25 min windows/x86_64 💿exe
✔️ 2103910 #2 2025-11-24 18:10:00 ~28 min tests/ui 📄log
✔️ 2103910 #2 2025-11-24 18:11:42 ~29 min linux/x86_64 📦tgz
✔️ 2103910 #2 2025-11-24 18:15:26 ~33 min linux/x86_64-nwaku 📦tgz
✔️ 2103910 pr19362 2025-11-24 18:27:40 ~15 min tests/e2e 📊rpt
✖️ 2103910 PR19362 2025-11-24 18:34:59 ~27 min tests/e2e-windows 📊rpt
✔️ 2103910 #4 2025-11-24 18:46:28 ~16 min macos/aarch64-nwaku 🍎dmg
✔️ 749cbea0 #2 2025-11-24 18:02:02 ~20 min android/arm64 🤖apk 📲
✔️ 0890677a #3 2025-11-24 20:48:37 ~9 min android/arm64 🤖apk 📲
6012c19 #5 2025-11-24 23:19:27 ~5 min macos/aarch64-nwaku 📄log
✔️ 6012c19 #3 2025-11-24 23:20:25 ~6 min tests/nim 📄log
✔️ 6012c19 #4 2025-11-24 23:23:10 ~9 min android/arm64 🤖apk 📲
✔️ 6012c19 #4 2025-11-24 23:25:16 ~11 min macos/aarch64 🍎dmg
✔️ 6012c19 #3 2025-11-24 23:27:34 ~13 min tests/ui 📄log
✔️ 6012c19 #3 2025-11-24 23:29:17 ~15 min ios/aarch64 📱ipa
✔️ 6012c19 #3 2025-11-24 23:29:56 ~15 min linux/x86_64 📦tgz
✔️ 6012c19 #3 2025-11-24 23:30:24 ~16 min linux/x86_64-nwaku 📦tgz
✔️ 6012c19 #3 2025-11-24 23:39:01 ~24 min windows/x86_64 💿exe
✔️ 6012c19 pr19362 2025-11-24 23:45:48 ~15 min tests/e2e 📊rpt
✖️ 6012c19 PR19362 2025-11-24 23:56:01 ~16 min tests/e2e-windows 📊rpt
b8593e8 #6 2025-11-25 00:08:06 ~5 min macos/aarch64-nwaku 📄log
✔️ b8593e8 #4 2025-11-25 00:09:03 ~6 min tests/nim 📄log
✔️ b8593e8 #5 2025-11-25 00:11:42 ~9 min android/arm64 🤖apk 📲
✔️ b8593e8 #5 2025-11-25 00:13:49 ~11 min macos/aarch64 🍎dmg
✔️ b8593e8 #4 2025-11-25 00:15:04 ~12 min ios/aarch64 📱ipa
✔️ b8593e8 #4 2025-11-25 00:16:11 ~13 min tests/ui 📄log
✔️ b8593e8 #4 2025-11-25 00:18:34 ~15 min linux/x86_64-nwaku 📦tgz
✔️ b8593e8 #4 2025-11-25 00:18:37 ~15 min linux/x86_64 📦tgz
✔️ b8593e8 #4 2025-11-25 00:24:45 ~21 min windows/x86_64 💿exe
✔️ b8593e8 #7 2025-11-25 00:32:36 ~12 min macos/aarch64-nwaku 🍎dmg
✔️ b8593e8 pr19362 2025-11-25 00:34:03 ~15 min tests/e2e 📊rpt
✖️ b8593e8 PR19362 2025-11-25 00:55:58 ~31 min tests/e2e-windows 📊rpt
0854840 #8 2025-11-25 00:44:23 ~5 min macos/aarch64-nwaku 📄log
✔️ 0854840 #5 2025-11-25 00:45:36 ~6 min tests/nim 📄log
✔️ 0854840 #6 2025-11-25 00:47:31 ~8 min android/arm64 🤖apk 📲
✔️ 0854840 #6 2025-11-25 00:51:09 ~12 min macos/aarch64 🍎dmg
✔️ 0854840 #5 2025-11-25 00:53:07 ~14 min tests/ui 📄log
✔️ 0854840 #5 2025-11-25 00:54:25 ~15 min linux/x86_64-nwaku 📦tgz
✔️ 0854840 #5 2025-11-25 00:55:22 ~16 min ios/aarch64 📱ipa
✔️ 0854840 #5 2025-11-25 00:55:58 ~17 min linux/x86_64 📦tgz
✔️ 0854840 #5 2025-11-25 01:03:03 ~24 min windows/x86_64 💿exe
✔️ 0854840 pr19362 2025-11-25 01:11:35 ~15 min tests/e2e 📊rpt
✖️ 0854840 PR19362 2025-11-25 01:32:04 ~28 min tests/e2e-windows 📊rpt
0eaf680 #9 2025-11-25 01:25:48 ~5 min macos/aarch64-nwaku 📄log
✔️ 0eaf680 #6 2025-11-25 01:27:01 ~6 min tests/nim 📄log
✔️ 0eaf680 #7 2025-11-25 01:29:43 ~9 min android/arm64 🤖apk 📲
✔️ 0eaf680 #7 2025-11-25 01:31:32 ~11 min macos/aarch64 🍎dmg
✔️ 0eaf680 #6 2025-11-25 01:34:12 ~13 min tests/ui 📄log
✔️ 0eaf680 #6 2025-11-25 01:35:33 ~15 min ios/aarch64 📱ipa
✔️ 0eaf680 #6 2025-11-25 01:36:09 ~15 min linux/x86_64 📦tgz
✔️ 0eaf680 #6 2025-11-25 01:36:38 ~16 min linux/x86_64-nwaku 📦tgz
✔️ 0eaf680 #6 2025-11-25 01:43:09 ~22 min windows/x86_64 💿exe
✔️ 0eaf680 pr19362 2025-11-25 01:54:06 ~17 min tests/e2e 📊rpt
✖️ 0eaf680 PR19362 2025-11-25 02:09:31 ~26 min tests/e2e-windows 📊rpt
9ed333c #10 2025-11-25 08:33:41 ~4 min macos/aarch64-nwaku 📄log
9ed333c #8 2025-11-25 08:33:41 ~4 min macos/aarch64 📄log
✔️ 9ed333c #7 2025-11-25 08:35:02 ~6 min tests/nim 📄log
✔️ 9ed333c #8 2025-11-25 08:37:52 ~9 min android/arm64 🤖apk 📲
✔️ 9ed333c #7 2025-11-25 08:42:35 ~13 min tests/ui 📄log
✔️ 9ed333c #7 2025-11-25 08:44:23 ~15 min linux/x86_64 📦tgz
✔️ 9ed333c #7 2025-11-25 08:44:48 ~16 min linux/x86_64-nwaku 📦tgz
✔️ 9ed333c #9 2025-11-25 08:48:28 ~11 min macos/aarch64 🍎dmg
✔️ 9ed333c #7 2025-11-25 08:52:21 ~23 min ios/aarch64 📱ipa
✔️ 9ed333c #7 2025-11-25 08:53:37 ~24 min windows/x86_64 💿exe
✔️ 9ed333c pr19362 2025-11-25 09:00:06 ~15 min tests/e2e 📊rpt
✖️ 9ed333c PR19362 2025-11-25 09:15:23 ~21 min tests/e2e-windows 📊rpt
Commit #️⃣ Finished (UTC) Duration Platform Result
565b74f #11 2025-11-25 09:28:14 ~5 min macos/aarch64-nwaku 📄log
✔️ 565b74f #8 2025-11-25 09:29:18 ~7 min tests/nim 📄log
✔️ 565b74f #9 2025-11-25 09:31:34 ~9 min android/arm64 🤖apk 📲
✔️ 565b74f #10 2025-11-25 09:35:59 ~13 min macos/aarch64 🍎dmg
✔️ 565b74f #8 2025-11-25 09:36:09 ~13 min tests/ui 📄log
✔️ 565b74f #8 2025-11-25 09:38:10 ~15 min linux/x86_64 📦tgz
✔️ 565b74f #8 2025-11-25 09:44:49 ~22 min linux/x86_64-nwaku 📦tgz
✔️ 565b74f #8 2025-11-25 09:46:00 ~23 min windows/x86_64 💿exe
✔️ 565b74f pr19362 2025-11-25 09:54:17 ~15 min tests/e2e 📊rpt
f2a0cac #12 2025-11-25 09:52:17 ~6 min macos/aarch64-nwaku 📄log
✔️ f2a0cac #9 2025-11-25 09:53:04 ~7 min tests/nim 📄log
✔️ f2a0cac #10 2025-11-25 09:55:43 ~9 min android/arm64 🤖apk 📲
✔️ f2a0cac #11 2025-11-25 09:58:08 ~12 min macos/aarch64 🍎dmg
✔️ f2a0cac #9 2025-11-25 09:59:48 ~14 min ios/aarch64 📱ipa
✔️ f2a0cac #9 2025-11-25 10:00:31 ~14 min tests/ui 📄log
✔️ f2a0cac #9 2025-11-25 10:02:33 ~16 min linux/x86_64 📦tgz
✔️ f2a0cac #9 2025-11-25 10:02:59 ~17 min linux/x86_64-nwaku 📦tgz
✖️ f2a0cac PR19362 2025-11-25 10:06:03 ~19 min tests/e2e-windows 📊rpt
✔️ f2a0cac #9 2025-11-25 10:12:14 ~26 min windows/x86_64 💿exe
✔️ f2a0cac pr19362 2025-11-25 10:19:15 ~16 min tests/e2e 📊rpt
✖️ f2a0cac PR19362 2025-11-25 10:35:53 ~23 min tests/e2e-windows 📊rpt
✔️ f2a0cac #13 2025-11-25 11:16:06 ~13 min macos/aarch64-nwaku 🍎dmg

@anastasiyaig anastasiyaig requested a review from a team as a code owner November 24, 2025 17:41
@anastasiyaig anastasiyaig requested review from anastasiyaig and removed request for a team November 24, 2025 17:41
@anastasiyaig anastasiyaig linked an issue Nov 24, 2025 that may be closed by this pull request
Copy link
Member

@jrainville jrainville left a comment

Choose a reason for hiding this comment

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

Code looks good 👍

}
}

// TODO remove me completely? literally the same as MessageContextMenuView, and overlaps the message text
Copy link
Member

Choose a reason for hiding this comment

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

I personally like it on Desktop, it's faster to reply for example (one less click 😄 )

Copy link
Member Author

Choose a reason for hiding this comment

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

True but with one line messages, the hover actions always cover half of the text

@caybro caybro force-pushed the fix/19328-19327-chat-context-menus-and-emojis branch 3 times, most recently from b8593e8 to 0854840 Compare November 25, 2025 00:38
@caybro caybro marked this pull request as draft November 25, 2025 01:10
@caybro caybro force-pushed the fix/19328-19327-chat-context-menus-and-emojis branch from 0854840 to 0eaf680 Compare November 25, 2025 01:20
caybro and others added 2 commits November 25, 2025 09:16
- StatusMessageEmojiReactions: update according to the latest Figma
designs, simplify the `showReactionAuthors()` function
- StatusMessage: disable the hover quick actions on mobile; the context
menu works much better and has the same actions (including the emoji
quick reactions)
- StatusTextMessage: make it `enabled: false` in order to support the
long-press context menu on mobile
- MessageView: streamline context menus opening that works with both
mouse and touch
- WalletAccountHeader: support fallback account icons (non-emojis)
- RenameAccountModal: fix changing the emoji of an existing wallet
account

- removed some unused properties
- update and fixed the relevant SB pages
- do no use hardcoded margins/paddings
- fix some QML warnings

Fixes #19328
Fixes #19327
Iterates: #19199
@caybro caybro force-pushed the fix/19328-19327-chat-context-menus-and-emojis branch 2 times, most recently from 9ed333c to 565b74f Compare November 25, 2025 09:21
- use StatusTextArea for StatusTextMessage; need this for the context
menu on mobile
- rework the context menu to ContextMenu + pressAndHold handler (the
only combo that works on mobile)
- use edge-to-edge separators in the profile context menu
@caybro caybro force-pushed the fix/19328-19327-chat-context-menus-and-emojis branch from 565b74f to f2a0cac Compare November 25, 2025 09:45
@caybro caybro marked this pull request as ready for review November 25, 2025 09:45
@caybro caybro merged commit 236d837 into master Nov 25, 2025
12 of 13 checks passed
@caybro caybro deleted the fix/19328-19327-chat-context-menus-and-emojis branch November 25, 2025 15:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

5 participants