From ed89ba77b8fa67df3c0f59155338fa7859af6163 Mon Sep 17 00:00:00 2001 From: Godfrain Jacques Date: Tue, 9 Jan 2024 01:54:54 -0800 Subject: [PATCH] Fix thumbnail images for quoted message (#13126) --- .../chat_content/messages/module.nim | 43 +++++-------------- .../service/message/dto/message.nim | 9 ++++ vendor/status-go | 2 +- 3 files changed, 21 insertions(+), 33 deletions(-) diff --git a/src/app/modules/main/chat_section/chat_content/messages/module.nim b/src/app/modules/main/chat_section/chat_content/messages/module.nim index cf71884c63..3b336b443d 100644 --- a/src/app/modules/main/chat_section/chat_content/messages/module.nim +++ b/src/app/modules/main/chat_section/chat_content/messages/module.nim @@ -68,6 +68,7 @@ proc updateItemsByAlbum(self: Module, items: var seq[Item], message: MessageDto) proc updateLinkPreviewsContacts(self: Module, item: Item, requestFromMailserver: bool) proc updateLinkPreviewsCommunities(self: Module, item: Item, requestFromMailserver: bool) proc currentUserWalletContainsAddress(self: Module, address: string): bool +proc updateQuotedImages(self: Module, items: var seq[Item], message: MessageDto) method delete*(self: Module) = self.controller.delete @@ -95,38 +96,7 @@ method viewDidLoad*(self: Module) = method getModuleAsVariant*(self: Module): QVariant = return self.viewVariant -# TODO: Fetch the message from status-go. The generated albumIdToImagesMap is built on the messages received and does not account for -# older messages for which the images would not be found. Ticket https://github.com/status-im/status-desktop/issues/12821 -proc generateAlbumIdToImageMap(self: Module, messages: seq[MessageDto]): Table[string, seq[string]] = - var albumIdToImagesMap = initTable[string, seq[string]]() - - for message in messages: - if message.albumId in albumIdToImagesMap: - albumIdToImagesMap[message.albumId].add(message.image) - else: - albumIdToImagesMap[message.albumId] = @[message.image] - - return albumIdToImagesMap - - -proc setQuotedMessageImages(self: Module, message: MessageDto, items: var seq[Item], albumIdToImagesMap: Table[string, seq[string]]) = - for i in 0 ..< items.len: - let item = items[i] - - var quotedMessageAlbumMessageImages = item.quotedMessageAlbumMessageImages - - if message.id != item.responseToMessageWithId: - continue - if message.albumId notin albumIdToImagesMap: - continue - - quotedMessageAlbumMessageImages = albumIdToImagesMap[message.albumId] - item.quotedMessageAlbumMessageImages = quotedMessageAlbumMessageImages - item.quotedMessageAlbumImagesCount = quotedMessageAlbumMessageImages.len - items[i] = item - proc createMessageItemsFromMessageDtos(self: Module, messages: seq[MessageDto], reactions: seq[ReactionDto] = @[]): seq[Item] = - var albumIdToImagesMap = self.generateAlbumIdToImageMap(messages) for message in messages: # https://github.com/status-im/status-desktop/issues/7632 will introduce deleteFroMe feature. # Now we just skip deleted messages @@ -138,7 +108,7 @@ proc createMessageItemsFromMessageDtos(self: Module, messages: seq[MessageDto], if (self.view.model().updateAlbumIfExists(message.albumId, message.image, message.id)): continue - self.setQuotedMessageImages(message, result, albumIdToImagesMap) + self.updateQuotedImages(result, message) if (self.updateItemsByAlbum(result, message)): continue @@ -736,6 +706,15 @@ proc setChatDetails(self: Module, chatDetails: ChatDto) = self.view.setChatIcon(chatDetails.icon) self.view.setChatType(chatDetails.chatType.int) +proc updateQuotedImages(self: Module, items: var seq[Item], message: MessageDto) = + for i in 0 ..< items.len: + let item = items[i] + + if len(message.quotedMessage.albumImages) > 0 and not message.deleted: + var quotedAlbumImages = item.quotedMessageAlbumMessageImages + quotedAlbumImages.add(message.quotedMessage.albumImages) + item.quotedMessageAlbumMessageImages = quotedAlbumImages + proc updateItemsByAlbum(self: Module, items: var seq[Item], message: MessageDto): bool = for i in 0 ..< items.len: let item = items[i] diff --git a/src/app_service/service/message/dto/message.nim b/src/app_service/service/message/dto/message.nim index 47d048f287..5e3796fed4 100644 --- a/src/app_service/service/message/dto/message.nim +++ b/src/app_service/service/message/dto/message.nim @@ -187,6 +187,15 @@ proc toQuotedMessage*(jsonObj: JsonNode): QuotedMessage = var discordMessageObj: JsonNode if(jsonObj.getProp("discordMessage", discordMessageObj)): result.discordMessage = toDiscordMessage(discordMessageObj) + + var quotedImagesArr: JsonNode + if jsonObj.getProp("albumImages", quotedImagesArr): + for element in quotedImagesArr.getElems(): + if element.getStr() == "": + continue + result.albumImages.add(element.getStr()) + + discard jsonObj.getProp("albumImagesCount", result.albumImagesCount) proc toSticker*(jsonObj: JsonNode): Sticker = result = Sticker() diff --git a/vendor/status-go b/vendor/status-go index 6599be1721..9d9c40b7cf 160000 --- a/vendor/status-go +++ b/vendor/status-go @@ -1 +1 @@ -Subproject commit 6599be1721e180fdb78d5c3f2c3daf3a6600b8e7 +Subproject commit 9d9c40b7cffa6af901c06836ef576ad5a91c51bc