fix: fix channels reordering and messing up the profile image

This commit is contained in:
Jonathan Rainville 2021-01-05 13:40:00 -05:00 committed by Iuri Matias
parent 4aeeee6d9c
commit 0ff5fa32f0
3 changed files with 7 additions and 14 deletions

View File

@ -31,7 +31,7 @@ proc handleChatEvents(self: ChatController) =
self.status.events.on("channelUpdate") do(e: Args): self.status.events.on("channelUpdate") do(e: Args):
var evArgs = ChatUpdateArgs(e) var evArgs = ChatUpdateArgs(e)
self.view.updateChats(evArgs.chats, false) self.view.updateChats(evArgs.chats)
self.status.events.on("messageDeleted") do(e: Args): self.status.events.on("messageDeleted") do(e: Args):
var evArgs = MessageArgs(e) var evArgs = MessageArgs(e)

View File

@ -352,7 +352,7 @@ QtObject:
channel.name = contact.username channel.name = contact.username
else: else:
channel.name = contact.localNickname channel.name = contact.localNickname
self.chats.updateChat(channel, false) self.chats.updateChat(channel)
if (self.activeChannel.id == channel.id): if (self.activeChannel.id == channel.id):
self.activeChannel.setChatItem(channel) self.activeChannel.setChatItem(channel)
self.activeChannelChanged() self.activeChannelChanged()
@ -487,12 +487,12 @@ QtObject:
self.unreadMessageCnt = unreadTotal self.unreadMessageCnt = unreadTotal
self.unreadMessagesCntChanged() self.unreadMessagesCntChanged()
proc updateChats*(self: ChatsView, chats: seq[Chat], triggerChange:bool = true) = proc updateChats*(self: ChatsView, chats: seq[Chat]) =
for chat in chats: for chat in chats:
if (chat.communityId != ""): if (chat.communityId != ""):
return return
self.upsertChannel(chat.id) self.upsertChannel(chat.id)
self.chats.updateChat(chat, triggerChange) self.chats.updateChat(chat)
if(self.activeChannel.id == chat.id): if(self.activeChannel.id == chat.id):
self.activeChannel.setChatItem(chat) self.activeChannel.setChatItem(chat)
self.currentSuggestions.setNewData(self.status.contacts.getContacts()) self.currentSuggestions.setNewData(self.status.contacts.getContacts())
@ -540,7 +540,7 @@ QtObject:
if (selectedChannel == nil): return if (selectedChannel == nil): return
selectedChannel.muted = true selectedChannel.muted = true
self.status.chat.muteChat(selectedChannel) self.status.chat.muteChat(selectedChannel)
self.chats.updateChat(selectedChannel, false) self.chats.updateChat(selectedChannel)
proc unmuteChannel*(self: ChatsView, channelIndex: int) {.slot.} = proc unmuteChannel*(self: ChatsView, channelIndex: int) {.slot.} =
if (self.chats.chats.len == 0): return if (self.chats.chats.len == 0): return
@ -548,7 +548,7 @@ QtObject:
if (selectedChannel == nil): return if (selectedChannel == nil): return
selectedChannel.muted = false selectedChannel.muted = false
self.status.chat.unmuteChat(selectedChannel) self.status.chat.unmuteChat(selectedChannel)
self.chats.updateChat(selectedChannel, false) self.chats.updateChat(selectedChannel)
proc channelIsMuted*(self: ChatsView, channelIndex: int): bool {.slot.} = proc channelIsMuted*(self: ChatsView, channelIndex: int): bool {.slot.} =
if (self.chats.chats.len == 0): return false if (self.chats.chats.len == 0): return false

View File

@ -143,20 +143,13 @@ QtObject:
if (channel == nil): return if (channel == nil): return
return channel.color return channel.color
proc updateChat*(self: ChannelsList, channel: Chat, moveToTop: bool = true) = proc updateChat*(self: ChannelsList, channel: Chat) =
let idx = self.upsertChannel(channel) let idx = self.upsertChannel(channel)
if idx == -1: return if idx == -1: return
let topLeft = self.createIndex(0, 0, nil) let topLeft = self.createIndex(0, 0, nil)
let bottomRight = self.createIndex(self.chats.len, 0, nil) let bottomRight = self.createIndex(self.chats.len, 0, nil)
if moveToTop:
if idx != 0: # Move last updated chat to the top of the list
self.chats.delete(idx)
self.chats.insert(channel, 0)
else:
self.chats[0] = channel
self.dataChanged(topLeft, bottomRight, @[ChannelsRoles.Name.int, ChannelsRoles.Description.int, ChannelsRoles.ContentType.int, ChannelsRoles.LastMessage.int, ChannelsRoles.Timestamp.int, ChannelsRoles.UnreadMessages.int, ChannelsRoles.Identicon.int, ChannelsRoles.ChatType.int, ChannelsRoles.Color.int, ChannelsRoles.HasMentions.int, ChannelsRoles.Muted.int]) self.dataChanged(topLeft, bottomRight, @[ChannelsRoles.Name.int, ChannelsRoles.Description.int, ChannelsRoles.ContentType.int, ChannelsRoles.LastMessage.int, ChannelsRoles.Timestamp.int, ChannelsRoles.UnreadMessages.int, ChannelsRoles.Identicon.int, ChannelsRoles.ChatType.int, ChannelsRoles.Color.int, ChannelsRoles.HasMentions.int, ChannelsRoles.Muted.int])
proc clearUnreadMessagesCount*(self: ChannelsList, channel: var Chat) = proc clearUnreadMessagesCount*(self: ChannelsList, channel: var Chat) =