Skip to content

Commit 86a6d48

Browse files
committed
fix(pins): fix edits not showing in the pinned messages until restart
Fixes #16639
1 parent 8460c22 commit 86a6d48

File tree

4 files changed

+35
-5
lines changed

4 files changed

+35
-5
lines changed

src/app/modules/main/chat_section/chat_content/controller.nim

+6
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,12 @@ proc init*(self: Controller) =
184184
return
185185
self.delegate.onGroupChatDetailsUpdated(args.newName, args.newColor, args.newImage)
186186

187+
self.events.on(SIGNAL_MESSAGE_EDITED) do(e: Args):
188+
let args = MessageEditedArgs(e)
189+
if(self.chatId != args.chatId):
190+
return
191+
self.delegate.onMessageEdited(args.message)
192+
187193
proc getMyChatId*(self: Controller): string =
188194
return self.chatId
189195

src/app/modules/main/chat_section/chat_content/io_interface.nim

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import NimQml
22

33
import ../item as chat_item
4-
import ../../../../../app_service/service/message/dto/pinned_message
5-
import ../../../../../app_service/service/chat/dto/chat
6-
4+
import app_service/service/message/dto/pinned_message
5+
import app_service/service/chat/dto/chat
6+
import app_service/service/message/dto/message
77
type
88
AccessInterface* {.pure inheritable.} = ref object of RootObj
99

@@ -31,7 +31,10 @@ method newPinnedMessagesLoaded*(self: AccessInterface, pinnedMessages: seq[Pinne
3131
method onUnpinMessage*(self: AccessInterface, messageId: string) {.base.} =
3232
raise newException(ValueError, "No implementation available")
3333

34-
method onPinMessage*(self: AccessInterface, mmessageId: string, actionInitiatedBy: string) {.base.} =
34+
method onPinMessage*(self: AccessInterface, messageId: string, actionInitiatedBy: string) {.base.} =
35+
raise newException(ValueError, "No implementation available")
36+
37+
method onMessageEdited*(self: AccessInterface, message: MessageDto) {.base.} =
3538
raise newException(ValueError, "No implementation available")
3639

3740
method onChatMuted*(self: AccessInterface) {.base.} =

src/app/modules/main/chat_section/chat_content/module.nim

+21
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,27 @@ method onPinMessage*(self: Module, messageId: string, actionInitiatedBy: string)
271271

272272
self.view.pinnedModel().insertItemBasedOnClock(item)
273273

274+
method onMessageEdited*(self: Module, message: MessageDto) =
275+
let index = self.view.pinnedModel().findIndexForMessageId(message.id)
276+
if index == -1:
277+
return
278+
279+
let itemBeforeChange = self.view.pinnedModel().getItemWithMessageId(message.id)
280+
let mentionedUsersPks = itemBeforeChange.mentionedUsersPks
281+
let communityChats = self.controller.getCommunityDetails().chats
282+
283+
self.view.pinnedModel().updateEditedMsg(
284+
message.id,
285+
self.controller.getRenderedText(message.parsedText, communityChats),
286+
message.text,
287+
message.parsedText,
288+
message.contentType,
289+
message.mentioned,
290+
message.containsContactMentions(),
291+
message.links,
292+
message.mentionedUsersPks
293+
)
294+
274295
method getMyChatId*(self: Module): string =
275296
self.controller.getMyChatId()
276297

src/app_service/service/message/service.nim

+1-1
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ QtObject:
519519

520520
self.events.emit(SIGNAL_PINNED_MESSAGES_LOADED, data)
521521
except Exception as e:
522-
error "Erorr load pinned messages for chat async", msg = e.msg
522+
error "Error load pinned messages for chat async", msg = e.msg
523523
# notify view, this is important
524524
self.events.emit(SIGNAL_PINNED_MESSAGES_LOADED, PinnedMessagesLoadedArgs())
525525

0 commit comments

Comments
 (0)