diff --git a/core/block/chats/chatsubscription/manager.go b/core/block/chats/chatsubscription/manager.go index 5345fc4e2..326f1f729 100644 --- a/core/block/chats/chatsubscription/manager.go +++ b/core/block/chats/chatsubscription/manager.go @@ -195,7 +195,7 @@ func (s *subscriptionManager) getEventsOnlyForLastMessage(events []*pb.EventMess for _, ev := range events { state.applyEvent(ev) } - lastMessage, ok := state.getLastMessage() + lastMessage, ok := state.getLastAddedMessage() if ok { addEvent := state.addEvents[lastMessage.Id] addEvent.SubIds = subIdsOnlyLastMessage diff --git a/core/block/chats/chatsubscription/state.go b/core/block/chats/chatsubscription/state.go index a25978977..27fde9e25 100644 --- a/core/block/chats/chatsubscription/state.go +++ b/core/block/chats/chatsubscription/state.go @@ -18,14 +18,20 @@ func newMessagesState() *messagesState { } } -func (s *messagesState) getLastMessage() (*model.ChatMessage, bool) { +func (s *messagesState) getLastAddedMessage() (*model.ChatMessage, bool) { var lastMessage *model.ChatMessage for _, m := range s.messages { if lastMessage == nil || lastMessage.OrderId < m.OrderId { lastMessage = m } } - return lastMessage, lastMessage != nil + + if lastMessage == nil { + return nil, false + } + + _, ok := s.addEvents[lastMessage.Id] + return lastMessage, ok } func (s *messagesState) applyEvent(ev *pb.EventMessage) {