Skip to content

Commit 6441b20

Browse files
committed
fix: pull message and fill avatars avoiding redundant fetches.
Signed-off-by: Gordon <[email protected]>
1 parent 2aeab12 commit 6441b20

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

internal/conversation_msg/message_check.go

+16-5
Original file line numberDiff line numberDiff line change
@@ -269,9 +269,9 @@ func (c *Conversation) pullMessageIntoTable(ctx context.Context, pullMsgData map
269269
}
270270
}
271271

272-
insertMsg[conversationID] = append(insertMessage, c.faceURLAndNicknameHandle(ctx, selfInsertMessage, othersInsertMessage, conversationID)...)
273-
updateMsg[conversationID] = updateMessage
274272
}
273+
insertMsg[conversationID] = append(insertMessage, c.faceURLAndNicknameHandle(ctx, selfInsertMessage, othersInsertMessage, conversationID)...)
274+
updateMsg[conversationID] = updateMessage
275275

276276
//update message
277277
if err6 := c.messageController.BatchUpdateMessageList(ctx, updateMsg); err6 != nil {
@@ -326,9 +326,11 @@ func (c *Conversation) singleHandle(ctx context.Context, self, others []*model_s
326326
}
327327
func (c *Conversation) groupHandle(ctx context.Context, self, others []*model_struct.LocalChatLog, lc *model_struct.LocalConversation) {
328328
allMessage := append(self, others...)
329-
localGroupMemberInfo, err := c.group.GetSpecifiedGroupMembersInfo(ctx, lc.GroupID, datautil.Slice(allMessage, func(e *model_struct.LocalChatLog) string {
329+
330+
allSenders := datautil.Slice(allMessage, func(e *model_struct.LocalChatLog) string {
330331
return e.SendID
331-
}))
332+
})
333+
localGroupMemberInfo, err := c.group.GetSpecifiedGroupMembersInfo(ctx, lc.GroupID, datautil.Distinct(allSenders))
332334
if err != nil {
333335
log.ZError(ctx, "get group member info err", err)
334336
return
@@ -337,11 +339,20 @@ func (c *Conversation) groupHandle(ctx context.Context, self, others []*model_st
337339
return e.UserID
338340
})
339341
for _, chatLog := range allMessage {
340-
if g, ok := groupMap[chatLog.SendID]; ok {
342+
if g, ok := groupMap[chatLog.SendID]; ok { // If group member info is successfully retrieved
341343
if g.FaceURL != "" && g.Nickname != "" {
342344
chatLog.SenderFaceURL = g.FaceURL
343345
chatLog.SenderNickname = g.Nickname
344346
}
347+
} else { // Otherwise, retrieve from local temporary cache
348+
faceURL, name, err := c.getUserNameAndFaceURL(ctx, chatLog.SendID)
349+
if err != nil {
350+
log.ZWarn(ctx, "getUserNameAndFaceURL error", err, "senderID", chatLog.SendID)
351+
} else if faceURL != "" && name != "" {
352+
chatLog.SenderFaceURL = faceURL
353+
chatLog.SenderNickname = name
354+
}
345355
}
346356
}
357+
347358
}

0 commit comments

Comments
 (0)