diff --git a/ui/app/AppLayouts/Chat/ChatColumn.qml b/ui/app/AppLayouts/Chat/ChatColumn.qml index 91e1e8b3c9..b5c67eef73 100644 --- a/ui/app/AppLayouts/Chat/ChatColumn.qml +++ b/ui/app/AppLayouts/Chat/ChatColumn.qml @@ -268,6 +268,21 @@ StackLayout { onStickerSelected: { chatsModel.stickers.send(hashId, packId) } + onSendMessage: { + if (chatInput.fileUrls.length > 0){ + chatsModel.sendImage(chatInput.fileUrls[0]); + } + var msg = chatsModel.plainText(Emoji.deparse(chatInput.textInput.text)) + if (msg.length > 0){ + msg = chatInput.interpretMessage(msg) + chatsModel.sendMessage(msg, chatInput.isReply ? SelectedMessage.messageId : "", Utils.isOnlyEmoji(msg) ? Constants.emojiType : Constants.messageType); + chatInput.textInput.text = ""; + if(event) event.accepted = true + chatInput.messageSound.stop() + Qt.callLater(chatInput.messageSound.play); + } + + } } } } diff --git a/ui/shared/status/StatusChatInput.qml b/ui/shared/status/StatusChatInput.qml index 78d88082b7..761cf8dbbb 100644 --- a/ui/shared/status/StatusChatInput.qml +++ b/ui/shared/status/StatusChatInput.qml @@ -16,6 +16,7 @@ Rectangle { signal sendTransactionCommandButtonClicked() signal receiveTransactionCommandButtonClicked() signal stickerSelected(string hashId, string packId) + signal sendMessage(var event) property bool emojiEvent: false; property bool paste: false; @@ -37,6 +38,9 @@ Rectangle { property alias textInput: messageInputField property bool isStatusUpdateInput: chatType === Constants.chatTypeStatusUpdate + property var fileUrls: [] + property alias messageSound: sendMessageSound + height: { if (extendedArea.visible) { return messageInput.height + extendedArea.height + Style.current.bigPadding @@ -71,7 +75,7 @@ Rectangle { messageInputField.insert(start, text.replace(/\n/g, "
")); } - function interpretMessage(msg) { + property var interpretMessage: function (msg) { if (msg.startsWith("/shrug")) { return msg.replace("/shrug", "") + " ¯\\\\\\_(ツ)\\_/¯" } @@ -98,8 +102,12 @@ Rectangle { event.accepted = true; return } + if (control.isStatusUpdateInput) { + return // Status update require the send button to be clicked + } if (messageInputField.length < messageLimit) { - sendMsg(event); + control.sendMessage(event) + control.hideExtendedArea(); return; } if(event) event.accepted = true @@ -334,25 +342,10 @@ Rectangle { return true; } - function sendMsg(event){ - if(control.isImage){ - chatsModel.sendImage(imageArea.imageSource); - } - var msg = chatsModel.plainText(Emoji.deparse(messageInputField.text)) - if(msg.length > 0){ - msg = interpretMessage(msg) - chatsModel.sendMessage(msg, control.isReply ? SelectedMessage.messageId : "", Utils.isOnlyEmoji(msg) ? Constants.emojiType : Constants.messageType); - messageInputField.text = ""; - if(event) event.accepted = true - sendMessageSound.stop() - Qt.callLater(sendMessageSound.play); - } - control.hideExtendedArea(); - } - function hideExtendedArea() { isImage = false; isReply = false; + control.fileUrls = [] imageArea.imageSource = ""; replyArea.userName = "" replyArea.identicon = "" @@ -362,7 +355,8 @@ Rectangle { function showImageArea(imagePath) { isImage = true; isReply = false; - imageArea.imageSource = imageDialog.fileUrls[0] + control.fileUrls = imageDialog.fileUrls + imageArea.imageSource = control.fileUrls[0] } function showReplyArea(userName, message, identicon) { @@ -582,6 +576,7 @@ Rectangle { anchors.topMargin: control.isStatusUpdateInput ? 0 : Style.current.halfPadding visible: isImage onImageRemoved: { + control.fileUrls = [] isImage = false } }