feat(chat): allow for editing last user message using arrow-up key

This commit is contained in:
Pascal Precht 2022-12-21 13:52:52 +01:00 committed by r4bbit
parent 784b9acd4f
commit f3eb29bfea
5 changed files with 25 additions and 0 deletions

View File

@ -166,6 +166,12 @@ QtObject:
proc jumpToMessage*(self: View, messageId: string) {.slot.} =
self.delegate.scrollToMessage(messageId)
proc setEditModeOnAndScrollToLastMessage*(self: View, pubkey: string) {.slot.} =
let lastMessage = self.model.getLastItemFrom(pubKey)
if lastMessage != nil and lastMessage.id != "":
self.model.setEditModeOn(lastMessage.id)
self.jumpToMessage(lastMessage.id)
proc resendMessage*(self: View, messageId: string) {.slot.} =
let error = self.delegate.resendChatMessage(messageId)
if (error != ""):

View File

@ -354,6 +354,13 @@ QtObject:
self.countChanged()
self.updateMessagesWithResponseTo(messageId)
proc getLastItemFrom*(self: Model, pubkey: string): Item =
# last item == first time since we process messages in reverse order
for i in 0 ..< self.items.len:
if self.items[i].senderId == pubkey:
return self.items[i]
proc getItemWithMessageId*(self: Model, messageId: string): Item =
let ind = self.findIndexForMessageId(messageId)
if(ind == -1):

View File

@ -180,6 +180,12 @@ QtObject {
messageModule.setEditModeOn(messageId)
}
function setEditModeOnLastMessage(pubkey) {
if(!messageModule)
return
messageModule.setEditModeOnAndScrollToLastMessage(pubkey)
}
function setEditModeOff(messageId) {
if(!messageModule)
return

View File

@ -250,6 +250,7 @@ ColumnLayout {
onUnblockChat: {
chatContentModule.unblockChat()
}
onKeyUpPress: messageStore.setEditModeOnLastMessage(root.rootStore.userProfileInst.pubKey)
}
}
}

View File

@ -28,6 +28,7 @@ Rectangle {
signal stickerSelected(string hashId, string packId, string url)
signal sendMessage(var event)
signal unblockChat()
signal keyUpPress()
property var usersStore
property var store
@ -358,6 +359,10 @@ Rectangle {
} else if (event.key === Qt.Key_Escape && control.isReply) {
control.isReply = false
event.accepted = true
} else if (event.key === Qt.Key_Up && getPlainText() == "") {
event.accepted = true
control.keyUpPress()
return
}
const symbolPressed = event.text.length > 0 &&