Skip to content

Commit b8294d0

Browse files
authored
feat: part of Emoji Reaction final design (#19140)
* fix(EmojiPopup): add selected emoji to recentEmoji model * refactor(EmojiPopup): only pass the needed props instead of all settings * feat(emoji): show recent emojis in the message context menu * fix(emojis): fix recentEmojis and skinTone not being properly saved The issue was that we set the property, which just overwrote the property and removed the link to the Setting. * feat(emojis): add button to open emoji popup in the message context menu * chore(emojis): remove no longer needed default emoji reactions model * fix(emoji): show basic emojis if there are no recent emojis
1 parent 17f73a8 commit b8294d0

File tree

15 files changed

+134
-183
lines changed

15 files changed

+134
-183
lines changed

src/app/modules/main/chat_section/chat_content/input_area/view.nim

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import ./preserved_properties
44
import ./urls_model
55
import ../../../../../../app/modules/shared_models/link_preview_model as link_preview_model
66
import ../../../../../../app/modules/shared_models/payment_request_model as payment_request_model
7-
import ../../../../../../app/modules/shared_models/default_emoji_reactions_model as default_emoji_reactions_model
87

98
QtObject:
109
type
@@ -20,8 +19,6 @@ QtObject:
2019
urlsModelVariant: QVariant
2120
sendingInProgress: bool
2221
askToEnableLinkPreview: bool
23-
defaultEmojiReactionsModel: default_emoji_reactions_model.Model
24-
defaultEmojiReactionsModelVariant: QVariant
2522

2623
proc setSendingInProgress*(self: View, value: bool)
2724

@@ -39,8 +36,6 @@ QtObject:
3936
result.urlsModel = newUrlsModel()
4037
result.urlsModelVariant = newQVariant(result.urlsModel)
4138
result.askToEnableLinkPreview = false
42-
result.defaultEmojiReactionsModel = newDefaultEmojiReactionsModel()
43-
result.defaultEmojiReactionsModelVariant = newQVariant(result.defaultEmojiReactionsModel)
4439

4540
proc load*(self: View) =
4641
self.delegate.viewDidLoad()

src/app/modules/shared_models/default_emoji_reactions_model.nim

Lines changed: 0 additions & 82 deletions
This file was deleted.

src/app/modules/shared_models/message_item.nim

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import ../../../app_service/service/message/dto/link_preview
77
import ../../../app_service/service/message/dto/payment_request
88
import ./link_preview_model as link_preview_model
99
import ./payment_request_model as payment_request_model
10-
import ./default_emoji_reactions_model as default_emoji_reactions_model
1110

1211
export types.ContentType
1312
import message_reaction_model, message_transaction_parameters_item
@@ -53,7 +52,6 @@ type
5352
deletedByContactDetails: ContactDetails
5453
links: seq[string]
5554
linkPreviewModel: link_preview_model.Model
56-
defaultEmojiReactionsModel: default_emoji_reactions_model.Model
5755
transactionParameters: TransactionParametersItem
5856
mentionedUsersPks: seq[string]
5957
senderTrustStatus: TrustStatus
@@ -172,7 +170,6 @@ proc initMessageItem*(
172170
result.pinned = true
173171
result.links = links
174172
result.linkPreviewModel = newLinkPreviewModel(linkPreviews)
175-
result.defaultEmojiReactionsModel = newDefaultEmojiReactionsModel()
176173
result.transactionParameters = transactionParameters
177174
result.mentionedUsersPks = mentionedUsersPks
178175
result.gapFrom = 0
@@ -515,11 +512,9 @@ proc getReactionId*(self: Item, emoji: string, userPublicKey: string): string =
515512
proc addReaction*(self: Item, emoji: string, didIReactWithThisEmoji: bool, userPublicKey: string,
516513
userDisplayName: string, reactionId: string) =
517514
self.reactionsModel.addReaction(emoji, didIReactWithThisEmoji, userPublicKey, userDisplayName, reactionId)
518-
self.defaultEmojiReactionsModel.setItemDidIReactWithThisEmoji(emoji, didIReactWithThisEmoji)
519515

520516
proc removeReaction*(self: Item, emoji: string, reactionId: string, didIRemoveThisReaction: bool) =
521517
self.reactionsModel.removeReaction(emoji, reactionId, didIRemoveThisReaction)
522-
self.defaultEmojiReactionsModel.setItemDidIReactWithThisEmoji(emoji, not didIRemoveThisReaction)
523518

524519
proc messageAttachments*(self: Item): seq[string] {.inline.} =
525520
self.messageAttachments
@@ -536,9 +531,6 @@ proc linkPreviewModel*(self: Item): link_preview_model.Model {.inline.} =
536531
proc paymentRequestModel*(self: Item): payment_request_model.Model {.inline.} =
537532
return self.paymentRequestModel
538533

539-
proc defaultEmojiReactionsModel*(self: Item): default_emoji_reactions_model.Model {.inline.} =
540-
return self.defaultEmojiReactionsModel
541-
542534
proc mentionedUsersPks*(self: Item): seq[string] {.inline.} =
543535
self.mentionedUsersPks
544536

src/app/modules/shared_models/message_model.nim

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ type
5050
DeletedByContactIcon
5151
Links
5252
LinkPreviewModel
53-
DefaultEmojiReactionsModel
5453
TransactionParameters
5554
MentionedUsersPks
5655
SenderTrustStatus
@@ -161,7 +160,6 @@ QtObject:
161160
ModelRole.DeletedByContactIcon.int: "deletedByContactIcon",
162161
ModelRole.Links.int: "links",
163162
ModelRole.LinkPreviewModel.int: "linkPreviewModel",
164-
ModelRole.DefaultEmojiReactionsModel.int: "defaultEmojiReactionsModel",
165163
ModelRole.TransactionParameters.int: "transactionParameters",
166164
ModelRole.MentionedUsersPks.int: "mentionedUsersPks",
167165
ModelRole.SenderTrustStatus.int: "senderTrustStatus",
@@ -331,8 +329,6 @@ QtObject:
331329
result = newQVariant(item.links.join(" "))
332330
of ModelRole.LinkPreviewModel:
333331
result = newQVariant(item.linkPreviewModel)
334-
of ModelRole.DefaultEmojiReactionsModel:
335-
result = newQVariant(item.defaultEmojiReactionsModel)
336332
of ModelRole.TransactionParameters:
337333
result = newQVariant($(%*{
338334
"id": item.transactionParameters.id,

storybook/pages/MessageContextMenuViewPage.qml

Lines changed: 5 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import QtQuick.Controls
33
import QtQuick.Layouts
44

55
import StatusQ.Core.Theme
6+
import StatusQ.Core.Utils as StatusQUtils
67

78
import Storybook
89

@@ -14,40 +15,6 @@ SplitView {
1415

1516
Logs { id: logs }
1617

17-
ListModel {
18-
id: defaultEmojiReactionsModel
19-
ListElement {
20-
emoji: "❤️"
21-
filename: "emojiReactions/heart"
22-
didIReactWithThisEmoji: false
23-
}
24-
ListElement {
25-
emoji: "👍"
26-
filename: "emojiReactions/thumbsUp"
27-
didIReactWithThisEmoji: false
28-
}
29-
ListElement {
30-
emoji: "👎"
31-
filename: "emojiReactions/thumbsDown"
32-
didIReactWithThisEmoji: false
33-
}
34-
ListElement {
35-
emoji: "😂"
36-
filename: "emojiReactions/laughing"
37-
didIReactWithThisEmoji: false
38-
}
39-
ListElement {
40-
emoji: "😢"
41-
filename: "emojiReactions/sad"
42-
didIReactWithThisEmoji: false
43-
}
44-
ListElement {
45-
emoji: "😡"
46-
filename: "emojiReactions/angry"
47-
didIReactWithThisEmoji: false
48-
}
49-
}
50-
5118
SplitView {
5219
orientation: Qt.Vertical
5320
SplitView.fillWidth: true
@@ -70,7 +37,10 @@ SplitView {
7037
closePolicy: Popup.NoAutoClose
7138

7239
messageId: "Oxdeadbeef"
73-
defaultEmojiReactionsModel: defaultEmojiReactionsModel
40+
emojiModel: StatusQUtils.Emoji.emojiModel
41+
// Should still show only 5 emojis even if more are provided
42+
recentEmojis: ["1f9de", "1f6fa", "1f44d", "1f44e", "1f602", "1f622", "1f621"]
43+
skinColor: ""
7444
messageContentType: Constants.messageContentType.messageType
7545
chatType: Constants.chatType.oneToOne
7646
isDebugEnabled: isDebugEnabledCheckBox.checked

storybook/pages/StatusEmojiPopupPage.qml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ SplitView {
5656
height: 440
5757
visible: true
5858
modal: false
59-
settings: settings
59+
recentEmojis: settings.recentEmojis
60+
skinColor: settings.skinColor
6061
emojiModel: StatusQUtils.Emoji.emojiModel
6162
onEmojiSelected: function(emoji, atCu, hexcode) {
6263
logs.logEvent("onEmojiSelected", ["emoji", "atCu", "hexcode"], arguments)

test/e2e/tests/crtitical_tests_prs/test_messaging_1x1_chat.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ def test_1x1_chat_add_contact_in_settings(multiple_instances):
3838
local_picture = configs.testpath.TEST_IMAGES / 'comm_logo.jpeg'
3939
picture = BASE_64_IMAGE_JPEG
4040

41-
EMOJI_PATHES = ["❤️", "👍", "👎", "😂", "😢", "😡"]
41+
# First five emojis in the reactions before there are custom ones
42+
EMOJI_PATHES = ["😀", "😃", "😄", "😁", "😆"]
4243

4344
with (multiple_instances(user_data=None) as aut_one, multiple_instances(user_data=None) as aut_two):
4445
with step(f'Launch multiple instances with authorized users {user_one.name} and {user_two.name}'):
@@ -186,7 +187,7 @@ def test_1x1_chat_add_contact_in_settings(multiple_instances):
186187
f"Last message does not have reply corner"
187188

188189
with step(f'User {user_one.name}, add reaction to the last message and verify it was added'):
189-
occurrence = random.randint(1, 6)
190+
occurrence = random.randint(1, 5)
190191
message.open_context_menu_for_message().add_reaction_to_message(occurrence)
191192
assert driver.waitFor(lambda: EMOJI_PATHES[occurrence - 1] in str(message.get_emoji_reactions_pathes()[0]),
192193
timeout), \

ui/app/AppLayouts/Chat/stores/RootStore.qml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,6 @@ QtObject {
295295

296296
property MessageStore messageStore: MessageStore { }
297297

298-
property var defaultEmojiReactionsModel
299-
300298
property var globalUtilsInst: globalUtils
301299

302300
property var mainModuleInst: mainModule

ui/app/AppLayouts/Chat/views/ChatMessagesView.qml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,6 @@ Item {
348348
pinnedMessage: model.pinned
349349
messagePinnedBy: model.pinnedBy
350350
reactionsModel: model.reactions
351-
defaultEmojiReactionsModel: model.defaultEmojiReactionsModel
352351
sticker: model.sticker
353352
stickerPack: model.stickerPack
354353
editModeOn: model.editMode

ui/app/mainui/AppMain.qml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ Item {
105105
contactsStore: appMain.contactsStore
106106
currencyStore: appMain.currencyStore
107107
communityTokensStore: appMain.communityTokensStore
108-
defaultEmojiReactionsModel: appMain.rootStore.defaultEmojiReactionsModel
109108
openCreateChat: createChatView.opened
110109
networkConnectionStore: appMain.networkConnectionStore
111110
}
@@ -1179,8 +1178,11 @@ Item {
11791178
sourceComponent: StatusEmojiPopup {
11801179
directParent: appMain.Window.window.contentItem
11811180
height: 440
1182-
settings: appMainLocalSettings
1181+
recentEmojis: appMainLocalSettings.recentEmojis
1182+
skinColor: appMainLocalSettings.skinColor
11831183
emojiModel: SQUtils.Emoji.emojiModel
1184+
onSetSkinColorRequested: color => appMainLocalSettings.skinColor = color
1185+
onSetRecentEmojisRequested: recentEmojis => appMainLocalSettings.recentEmojis = recentEmojis
11841186
}
11851187
}
11861188

@@ -1907,7 +1909,6 @@ Item {
19071909
contactsStore: appMain.contactsStore
19081910
currencyStore: appMain.currencyStore
19091911
communityTokensStore: appMain.communityTokensStore
1910-
defaultEmojiReactionsModel: appMain.rootStore.defaultEmojiReactionsModel
19111912
openCreateChat: createChatView.opened
19121913
networkConnectionStore: appMain.networkConnectionStore
19131914
isChatSectionModule: true
@@ -2230,7 +2231,6 @@ Item {
22302231
contactsStore: appMain.contactsStore
22312232
currencyStore: appMain.currencyStore
22322233
communityTokensStore: appMain.communityTokensStore
2233-
defaultEmojiReactionsModel: appMain.rootStore.defaultEmojiReactionsModel
22342234
openCreateChat: createChatView.opened
22352235
walletStore: WalletStores.RootStore
22362236
isChatSectionModule: true
@@ -2307,7 +2307,6 @@ Item {
23072307
contactsStore: appMain.contactsStore
23082308
currencyStore: appMain.currencyStore
23092309
communityTokensStore: appMain.communityTokensStore
2310-
defaultEmojiReactionsModel: appMain.rootStore.defaultEmojiReactionsModel
23112310
openCreateChat: createChatView.opened
23122311
isChatSectionModule: false
23132312
communityId: model.id
@@ -2378,7 +2377,6 @@ Item {
23782377
contactsStore: appMain.contactsStore
23792378
currencyStore: appMain.currencyStore
23802379
communityTokensStore: appMain.communityTokensStore
2381-
defaultEmojiReactionsModel: appMain.rootStore.defaultEmojiReactionsModel
23822380
openCreateChat: createChatView.opened
23832381
isChatSectionModule: true
23842382
}

0 commit comments

Comments
 (0)