fix(@desktop/chat): cannot unpin last message in modal
fixes #2659 1 - Change call from remove to deleteMessage Remove were not updating the index and was causing the issue 2 - Erase the remove proc as the deleteMessage should always be used
This commit is contained in:
parent
4213f953e0
commit
a811ee215c
|
@ -61,7 +61,7 @@ proc handleChatEvents(self: ChatController) =
|
||||||
if (evArgs.communityMembershipRequests.len > 0):
|
if (evArgs.communityMembershipRequests.len > 0):
|
||||||
self.view.communities.addMembershipRequests(evArgs.communityMembershipRequests)
|
self.view.communities.addMembershipRequests(evArgs.communityMembershipRequests)
|
||||||
if (evArgs.pinnedMessages.len > 0):
|
if (evArgs.pinnedMessages.len > 0):
|
||||||
self.view.addPinnedMessages(evArgs.pinnedMessages)
|
self.view.refreshPinnedMessages(evArgs.pinnedMessages)
|
||||||
if (evArgs.activityCenterNotifications.len > 0):
|
if (evArgs.activityCenterNotifications.len > 0):
|
||||||
self.view.addActivityCenterNotification(evArgs.activityCenterNotifications)
|
self.view.addActivityCenterNotification(evArgs.activityCenterNotifications)
|
||||||
self.view.communities.updateNotifications(evArgs.activityCenterNotifications)
|
self.view.communities.updateNotifications(evArgs.activityCenterNotifications)
|
||||||
|
|
|
@ -441,8 +441,8 @@ QtObject:
|
||||||
proc deleteMessageWhichReplacedMessageWithId*(self: ChatsView, channelId: string, messageId: string): bool =
|
proc deleteMessageWhichReplacedMessageWithId*(self: ChatsView, channelId: string, messageId: string): bool =
|
||||||
result = self.messageView.deleteMessageWhichReplacedMessageWithId(channelId, messageId)
|
result = self.messageView.deleteMessageWhichReplacedMessageWithId(channelId, messageId)
|
||||||
|
|
||||||
proc addPinnedMessages*(self: ChatsView, pinnedMessages: seq[Message]) =
|
proc refreshPinnedMessages*(self: ChatsView, pinnedMessages: seq[Message]) =
|
||||||
self.messageView.addPinnedMessages(pinnedMessages)
|
self.messageView.refreshPinnedMessages(pinnedMessages)
|
||||||
|
|
||||||
proc clearMessages*(self: ChatsView, id: string) =
|
proc clearMessages*(self: ChatsView, id: string) =
|
||||||
self.messageView.clearMessages(id)
|
self.messageView.clearMessages(id)
|
||||||
|
|
|
@ -313,16 +313,6 @@ QtObject:
|
||||||
self.countChanged()
|
self.countChanged()
|
||||||
self.endInsertRows()
|
self.endInsertRows()
|
||||||
|
|
||||||
proc remove*(self: ChatMessageList, messageId: string) =
|
|
||||||
if not self.messageIndex.hasKey(messageId): return
|
|
||||||
|
|
||||||
let index = self.getMessageIndex(messageId)
|
|
||||||
self.beginRemoveRows(newQModelIndex(), index, index)
|
|
||||||
self.messages.delete(index)
|
|
||||||
self.messageIndex.del(messageId)
|
|
||||||
self.countChanged()
|
|
||||||
self.endRemoveRows()
|
|
||||||
|
|
||||||
proc getMessageById*(self: ChatMessageList, messageId: string): Message =
|
proc getMessageById*(self: ChatMessageList, messageId: string): Message =
|
||||||
if (not self.messageIndex.hasKey(messageId)): return
|
if (not self.messageIndex.hasKey(messageId)): return
|
||||||
return self.messages[self.messageIndex[messageId]]
|
return self.messages[self.messageIndex[messageId]]
|
||||||
|
@ -344,9 +334,11 @@ QtObject:
|
||||||
|
|
||||||
proc changeMessagePinned*(self: ChatMessageList, messageId: string, pinned: bool, pinnedBy: string): bool {.discardable.} =
|
proc changeMessagePinned*(self: ChatMessageList, messageId: string, pinned: bool, pinnedBy: string): bool {.discardable.} =
|
||||||
if not self.messageIndex.hasKey(messageId): return false
|
if not self.messageIndex.hasKey(messageId): return false
|
||||||
|
|
||||||
let msgIdx = self.messageIndex[messageId]
|
let msgIdx = self.messageIndex[messageId]
|
||||||
if msgIdx < 0: return false
|
if msgIdx < 0: return false
|
||||||
if msgIdx >= self.messages.len: return false
|
if msgIdx >= self.messages.len: return false
|
||||||
|
|
||||||
var message = self.messages[msgIdx]
|
var message = self.messages[msgIdx]
|
||||||
message.isPinned = pinned
|
message.isPinned = pinned
|
||||||
message.pinnedBy = pinnedBy
|
message.pinnedBy = pinnedBy
|
||||||
|
|
|
@ -463,7 +463,7 @@ QtObject:
|
||||||
self.upsertChannel(chatId)
|
self.upsertChannel(chatId)
|
||||||
if self.messageList[chatId].changeMessagePinned(messageId, false, ""):
|
if self.messageList[chatId].changeMessagePinned(messageId, false, ""):
|
||||||
try:
|
try:
|
||||||
self.pinnedMessagesList[chatId].remove(messageId)
|
discard self.pinnedMessagesList[chatId].deleteMessage(messageId)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error "Error removing ", msg = e.msg
|
error "Error removing ", msg = e.msg
|
||||||
|
|
||||||
|
@ -475,7 +475,7 @@ QtObject:
|
||||||
self.status.chat.setPinMessage(messageId, chatId, false)
|
self.status.chat.setPinMessage(messageId, chatId, false)
|
||||||
self.removePinMessage(messageId, chatId)
|
self.removePinMessage(messageId, chatId)
|
||||||
|
|
||||||
proc addPinnedMessages*(self: MessageView, pinnedMessages: seq[Message]) =
|
proc refreshPinnedMessages*(self: MessageView, pinnedMessages: seq[Message]) =
|
||||||
for pinnedMessage in pinnedMessages:
|
for pinnedMessage in pinnedMessages:
|
||||||
if (pinnedMessage.isPinned):
|
if (pinnedMessage.isPinned):
|
||||||
self.addPinMessage(pinnedMessage.id, pinnedMessage.localChatId, pinnedMessage.pinnedBy)
|
self.addPinMessage(pinnedMessage.id, pinnedMessage.localChatId, pinnedMessage.pinnedBy)
|
||||||
|
|
Loading…
Reference in New Issue