From d0de5c074fa8006a3b42f6fa36c293080f8d29ab Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Wed, 3 Feb 2021 16:13:05 -0400 Subject: [PATCH] fix: populate suggestion box with all users from the message list Fixes: #1328 --- src/app/chat/views/message_list.nim | 2 + ui/app/AppLayouts/Chat/ChatColumn.qml | 55 ++++++++++++++++++++------- ui/shared/status/StatusChatInput.qml | 1 + 3 files changed, 44 insertions(+), 14 deletions(-) diff --git a/src/app/chat/views/message_list.nim b/src/app/chat/views/message_list.nim index cd7af19637..4c001efb04 100644 --- a/src/app/chat/views/message_list.nim +++ b/src/app/chat/views/message_list.nim @@ -212,8 +212,10 @@ QtObject: let message = self.messages[index] case data: of "userName": result = (message.userName) + of "publicKey": result = (message.fromAuthor) of "alias": result = (message.alias) of "localName": result = (message.localName) + of "ensName": result = (message.ensName) of "message": result = (message.text) of "identicon": result = (message.identicon) of "timestamp": result = $(message.timestamp) diff --git a/ui/app/AppLayouts/Chat/ChatColumn.qml b/ui/app/AppLayouts/Chat/ChatColumn.qml index 0a4a490788..280286a3e9 100644 --- a/ui/app/AppLayouts/Chat/ChatColumn.qml +++ b/ui/app/AppLayouts/Chat/ChatColumn.qml @@ -41,6 +41,41 @@ StackLayout { currentIndex: chatsModel.activeChannelIndex > -1 && chatGroupsListViewCount > 0 ? 0 : 1 + function populateSuggestions(){ + chatInput.textInput.forceActiveFocus(Qt.MouseFocusReason) + chatInput.suggestionsList.clear() + const len = chatsModel.suggestionList.rowCount() + + var idMap = {} + + for (let i = 0; i < len; i++) { + const contactAddr = chatsModel.suggestionList.rowData(i, "address"); + if(idMap[contactAddr]) continue; + chatInput.suggestionsList.append({ + alias: chatsModel.suggestionList.rowData(i, "alias"), + ensName: chatsModel.suggestionList.rowData(i, "ensName"), + address: contactAddr, + identicon: chatsModel.suggestionList.rowData(i, "identicon"), + localNickname: chatsModel.suggestionList.rowData(i, "localNickname") + }); + idMap[contactAddr] = true; + } + const len2 = chatsModel.messageList.rowCount(); + for (let i = 0; i < len2; i++) { + const contactAddr = chatsModel.messageList.getMessageData(i, "publicKey"); + if(idMap[contactAddr]) continue; + chatInput.suggestionsList.append({ + alias: chatsModel.messageList.getMessageData(i, "alias"), + ensName: chatsModel.messageList.getMessageData(i, "ensName"), + address: contactAddr, + identicon: chatsModel.messageList.getMessageData(i, "identicon"), + localNickname: chatsModel.messageList.getMessageData(i, "localName") + }); + idMap[contactAddr] = true; + } + } + + function showReplyArea() { isReply = true; isImage = false; @@ -165,23 +200,15 @@ StackLayout { MessageContextMenu { id: messageContextMenu } - + Connections { target: chatsModel onActiveChannelChanged: { - chatInput.textInput.forceActiveFocus(Qt.MouseFocusReason) - chatInput.suggestionsList.clear() - const len = chatsModel.suggestionList.rowCount() - for (let i = 0; i < len; i++) { - chatInput.suggestionsList.append({ - alias: chatsModel.suggestionList.rowData(i, "alias"), - ensName: chatsModel.suggestionList.rowData(i, "ensName"), - address: chatsModel.suggestionList.rowData(i, "address"), - identicon: chatsModel.suggestionList.rowData(i, "identicon"), - ensVerified: chatsModel.suggestionList.rowData(i, "ensVerified"), - localNickname: chatsModel.suggestionList.rowData(i, "localNickname") - }); - } + chatInput.suggestions.hide(); + populateSuggestions(); + } + onMessagePushed: { + populateSuggestions(); } } diff --git a/ui/shared/status/StatusChatInput.qml b/ui/shared/status/StatusChatInput.qml index 1d0670d8fd..5fc3261a99 100644 --- a/ui/shared/status/StatusChatInput.qml +++ b/ui/shared/status/StatusChatInput.qml @@ -42,6 +42,7 @@ Rectangle { property alias messageSound: sendMessageSound property alias suggestionsList: suggestions + property alias suggestions: suggestionsBox height: { if (extendedArea.visible) {