parent
719d66b332
commit
7d5ea12095
|
@ -43,6 +43,10 @@ proc handleChatEvents(self: ChatController) =
|
|||
self.view.updateChats(evArgs.chats)
|
||||
self.view.pushMessages(evArgs.messages)
|
||||
|
||||
self.status.events.on("chatHistoryCleared") do(e: Args):
|
||||
var args = ChannelArgs(e)
|
||||
self.view.clearMessages(args.chat.id)
|
||||
|
||||
self.status.events.on("channelJoined") do(e: Args):
|
||||
var channel = ChannelArgs(e)
|
||||
discard self.view.chats.addChatItemToList(channel.chat)
|
||||
|
|
|
@ -86,6 +86,12 @@ QtObject:
|
|||
|
||||
proc messagePushed*(self: ChatsView) {.signal.}
|
||||
|
||||
proc messagesCleared*(self: ChatsView) {.signal.}
|
||||
|
||||
proc clearMessages*(self: ChatsView, id: string) =
|
||||
self.messageList[id].clear()
|
||||
self.messagesCleared()
|
||||
|
||||
proc pushMessages*(self:ChatsView, messages: var seq[Message]) =
|
||||
for msg in messages.mitems:
|
||||
self.upsertChannel(msg.chatId)
|
||||
|
@ -130,6 +136,9 @@ QtObject:
|
|||
proc leaveActiveChat*(self: ChatsView) {.slot.} =
|
||||
self.status.chat.leave(self.activeChannel.id)
|
||||
|
||||
proc clearChatHistory*(self: ChatsView, id: string) {.slot.} =
|
||||
self.status.chat.clearHistory(id)
|
||||
|
||||
proc updateChats*(self: ChatsView, chats: seq[Chat]) =
|
||||
for chat in chats:
|
||||
self.upsertChannel(chat.id)
|
||||
|
|
|
@ -100,6 +100,11 @@ QtObject:
|
|||
self.messages.add(message)
|
||||
self.endInsertRows()
|
||||
|
||||
proc clear*(self: ChatMessageList) =
|
||||
self.beginResetModel()
|
||||
self.messages = @[]
|
||||
self.endResetModel()
|
||||
|
||||
proc updateUsernames*(self: ChatMessageList, contacts: seq[Profile]) =
|
||||
let topLeft = self.createIndex(0, 0, nil)
|
||||
let bottomRight = self.createIndex(self.messages.len, 0, nil)
|
||||
|
|
|
@ -136,12 +136,18 @@ proc leave*(self: ChatModel, chatId: string) =
|
|||
|
||||
status_chat.deactivateChat(self.channels[chatId])
|
||||
# TODO: REMOVE MAILSERVER TOPIC
|
||||
# TODO: REMOVE HISTORY
|
||||
self.filters.del(chatId)
|
||||
self.channels.del(chatId)
|
||||
discard status_chat.clearChatHistory(chatId)
|
||||
self.events.emit("channelLeft", ChatIdArg(chatId: chatId))
|
||||
self.events.emit("activeChannelChanged", ChatIdArg(chatId: ""))
|
||||
|
||||
proc clearHistory*(self: ChatModel, chatId: string) =
|
||||
discard status_chat.clearChatHistory(chatId)
|
||||
let chat = self.channels[chatId]
|
||||
self.events.emit("chatHistoryCleared", ChannelArgs(chat: chat))
|
||||
|
||||
|
||||
proc setActiveChannel*(self: ChatModel, chatId: string) =
|
||||
self.events.emit("activeChannelChanged", ChatIdArg(chatId: chatId))
|
||||
|
||||
|
|
|
@ -100,6 +100,9 @@ proc confirmJoiningGroup*(chatId: string): string =
|
|||
proc leaveGroupChat*(chatId: string): string =
|
||||
callPrivateRPC("leaveGroupChat".prefix, %* [nil, chatId, true])
|
||||
|
||||
proc clearChatHistory*(chatId: string): string =
|
||||
callPrivateRPC("deleteMessagesByChatID".prefix, %* [chatId])
|
||||
|
||||
proc renameGroup*(chatId: string, newName: string): string =
|
||||
callPrivateRPC("changeGroupChatName".prefix, %* [nil, chatId, newName])
|
||||
|
||||
|
|
|
@ -93,6 +93,11 @@ Rectangle {
|
|||
|
||||
PopupMenu {
|
||||
id: chatContextMenu
|
||||
Action {
|
||||
icon.source: "../../../img/close.svg"
|
||||
text: qsTr("Clear history")
|
||||
onTriggered: chatsModel.clearChatHistory(chatsModel.activeChannel.id)
|
||||
}
|
||||
Action {
|
||||
icon.source: "../../../img/leave_chat.svg"
|
||||
text: qsTr("Leave Chat")
|
||||
|
@ -107,6 +112,11 @@ Rectangle {
|
|||
text: qsTr("Group Information")
|
||||
onTriggered: groupInfoPopup.open()
|
||||
}
|
||||
Action {
|
||||
icon.source: "../../../img/close.svg"
|
||||
text: qsTr("Clear history")
|
||||
onTriggered: chatsModel.clearChatHistory(chatsModel.activeChannel.id)
|
||||
}
|
||||
Action {
|
||||
icon.source: "../../../img/leave_chat.svg"
|
||||
text: qsTr("Leave Group")
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M9.68656 4.31295C9.88182 4.50821 9.88182 4.8248 9.68656 5.02006L7.94244 6.76418C7.81227 6.89435 7.81227 7.10541 7.94244 7.23558L9.68656 8.9797C9.88182 9.17496 9.88182 9.49154 9.68656 9.68681C9.4913 9.88207 9.17472 9.88207 8.97945 9.68681L7.23534 7.94269C7.10516 7.81251 6.89411 7.81251 6.76393 7.94269L5.01989 9.68672C4.82463 9.88199 4.50805 9.88199 4.31279 9.68672C4.11753 9.49146 4.11753 9.17488 4.31279 8.97962L6.05682 7.23558C6.187 7.10541 6.187 6.89435 6.05682 6.76418L4.31279 5.02014C4.11753 4.82488 4.11753 4.50829 4.31279 4.31303C4.50805 4.11777 4.82463 4.11777 5.01989 4.31303L6.76393 6.05707C6.89411 6.18724 7.10516 6.18724 7.23534 6.05707L8.97945 4.31295C9.17472 4.11769 9.4913 4.11769 9.68656 4.31295Z" fill="#4360DF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.99967 13.6666C10.6816 13.6666 13.6663 10.6818 13.6663 6.99992C13.6663 3.31802 10.6816 0.333252 6.99967 0.333252C3.31778 0.333252 0.333008 3.31802 0.333008 6.99992C0.333008 10.6818 3.31778 13.6666 6.99967 13.6666ZM6.99967 12.6666C10.1293 12.6666 12.6663 10.1295 12.6663 6.99992C12.6663 3.87031 10.1293 1.33325 6.99967 1.33325C3.87006 1.33325 1.33301 3.87031 1.33301 6.99992C1.33301 10.1295 3.87006 12.6666 6.99967 12.6666Z" fill="#4360DF"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
Loading…
Reference in New Issue