@@ -21,11 +21,10 @@ import ./dto/urls_unfurling_plan
2121import ./ dto/ link_preview
2222import ./ message_cursor
2323
24- import ../../ common/ activity_center
25- import ../../ common/ message as message_common
26- import ../../ common/ conversion as service_conversion
27-
28- from ../../ common/ account_constants import ZERO_ADDRESS
24+ import app_service/ common/ activity_center
25+ import app_service/ common/ message as message_common
26+ import app_service/ common/ conversion as service_conversion
27+ from app_service/ common/ account_constants import ZERO_ADDRESS
2928
3029import web3/ conversions
3130
@@ -225,6 +224,27 @@ QtObject:
225224
226225 return self.pinnedMsgCursor[chatId]
227226
227+ proc checkPaymentRequestsInMessage * (self: Service , message: var MessageDto ) =
228+ for paymentRequest in message.paymentRequests.mitems:
229+ if paymentRequest.tokenKey.len == 0 or paymentRequest.logoUri.len == 0 :
230+ if paymentRequest.symbol.len > 0 :
231+ # due to backward compatibility, in case the tokenKey is empty, we should try to find it by symbol on the received chain.
232+ let token = self.tokenService.getTokenBySymbolOnChain (paymentRequest.symbol, paymentRequest.chainId)
233+ if token.isNil:
234+ error " token is nil" , tokenKey= paymentRequest.tokenKey, procName= " checkPaymentRequestsInMessage"
235+ continue
236+ paymentRequest.tokenKey = token.key
237+ paymentRequest.symbol = token.symbol
238+ paymentRequest.logoUri = token.logoUri
239+
240+ proc checkPaymentRequestsInMessages * (self: Service , messages: var seq [MessageDto ]) =
241+ for message in messages.mitems:
242+ self.checkPaymentRequestsInMessage (message)
243+
244+ proc checkPaymentRequestsInPinnedMessages * (self: Service , pinnedMessages: var seq [PinnedMessageDto ]) =
245+ for pinnedMessage in pinnedMessages.mitems:
246+ self.checkPaymentRequestsInMessage (pinnedMessage.message)
247+
228248 proc asyncLoadMoreMessagesForChat * (self: Service , chatId: string , limit = MESSAGES_PER_PAGE ): bool =
229249 if (chatId.len == 0 ):
230250 error " empty chat id" , procName= " asyncLoadMoreMessagesForChat"
@@ -357,6 +377,7 @@ QtObject:
357377 return
358378
359379 self.bulkReplacePubKeysWithDisplayNames (messages)
380+ self.checkPaymentRequestsInMessages (messages)
360381
361382 for i in 0 ..< chats.len:
362383 let chatId = chats[i].id
@@ -405,7 +426,7 @@ QtObject:
405426 return self.numOfPinnedMessagesPerChat[chatId]
406427 return 0
407428
408- proc handlePinnedMessagesUpdate (self: Service , pinnedMessages: seq [PinnedMessageUpdateDto ]) =
429+ proc handlePinnedMessagesUpdate (self: Service , pinnedMessages: var seq [PinnedMessageUpdateDto ]) =
409430 for pm in pinnedMessages:
410431 var chatId: string = " "
411432 if (self.numOfPinnedMessagesPerChat.contains (pm.localChatId)):
@@ -480,6 +501,7 @@ QtObject:
480501 messages = map (args.messages.getElems (), proc (x: JsonNode ): MessageDto = x.toMessageDto ())
481502
482503 self.bulkReplacePubKeysWithDisplayNames (messages)
504+ self.checkPaymentRequestsInMessages (messages)
483505
484506 self.events.emit (SIGNAL_MESSAGES_LOADED , MessagesLoadedArgs (
485507 chatId: args.chatId,
@@ -581,6 +603,8 @@ QtObject:
581603 result = x.toReactionDto ()
582604 )
583605
606+ self.checkPaymentRequestsInPinnedMessages (pinnedMessages)
607+
584608 let data = PinnedMessagesLoadedArgs (chatId: chatId, pinnedMessages: pinnedMessages, reactions: reactions)
585609
586610 self.events.emit (SIGNAL_PINNED_MESSAGES_LOADED , data)
@@ -619,6 +643,7 @@ QtObject:
619643 messages = map (messagesArr.getElems (), proc (x: JsonNode ): MessageDto = x.toMessageDto ())
620644
621645 self.bulkReplacePubKeysWithDisplayNames (messages)
646+ self.checkPaymentRequestsInMessages (messages)
622647
623648 # handling reactions
624649 var reactionsArr: JsonNode
@@ -660,6 +685,7 @@ QtObject:
660685 var messages = map (rpcResponseObj{" messages" }.getElems (), proc (x: JsonNode ): MessageDto = x.toMessageDto ())
661686 if messages.len > 0 :
662687 self.bulkReplacePubKeysWithDisplayNames (messages)
688+ self.checkPaymentRequestsInMessages (messages)
663689
664690 let data = CommunityMemberMessagesArgs (communityId: communityId, messages: messages)
665691 self.events.emit (SIGNAL_COMMUNITY_MEMBER_ALL_MESSAGES , data)
0 commit comments