mirror of
https://github.com/Kyren223/eko.git
synced 2026-08-29 02:41:31 +00:00
Optimized OnNewMessageReceived by only calling it when there is a
single message
This commit is contained in:
@@ -1623,7 +1623,9 @@ func (m *Model) NewMsgSep(height, remainingHeight int) string {
|
||||
return newMsgStyle.Render(line + NewText)
|
||||
}
|
||||
|
||||
func (m *Model) OnNewMessagesReceived(info *packet.MessagesInfo) {
|
||||
func (m *Model) OnNewMessageReceived(info *packet.MessagesInfo) {
|
||||
assert.Assert(len(info.Messages) == 1, "expected only a single message", "len", len(info.Messages))
|
||||
|
||||
var chatId *snowflake.ID = nil
|
||||
if m.receiverIndex != -1 {
|
||||
chatId = &state.Data.Signals[m.receiverIndex]
|
||||
@@ -1638,18 +1640,18 @@ func (m *Model) OnNewMessagesReceived(info *packet.MessagesInfo) {
|
||||
return
|
||||
}
|
||||
|
||||
for _, msg := range info.Messages {
|
||||
if msg.SenderID == *state.UserID {
|
||||
m.outdatedLastReadMsg = &msg.ID
|
||||
return
|
||||
}
|
||||
msg := info.Messages[0]
|
||||
|
||||
if m.base == SnapToBottom {
|
||||
lastMsg := state.GetLastMessage(*chatId)
|
||||
if lastMsg != nil && m.outdatedLastReadMsg != nil &&
|
||||
*lastMsg == *m.outdatedLastReadMsg {
|
||||
m.outdatedLastReadMsg = &msg.ID
|
||||
}
|
||||
if msg.SenderID == *state.UserID {
|
||||
m.outdatedLastReadMsg = &msg.ID
|
||||
return
|
||||
}
|
||||
|
||||
if m.base == SnapToBottom {
|
||||
lastMsg := state.GetLastMessage(*chatId)
|
||||
if lastMsg != nil && m.outdatedLastReadMsg != nil &&
|
||||
*lastMsg == *m.outdatedLastReadMsg {
|
||||
m.outdatedLastReadMsg = &msg.ID
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -328,7 +328,9 @@ func (m *Model) updateConnected(message tea.Msg) tea.Cmd {
|
||||
}
|
||||
|
||||
case *packet.MessagesInfo:
|
||||
m.chat.OnNewMessagesReceived(msg) // MUST BE BEFORE STATE UPDATE
|
||||
if len(msg.Messages) == 1 {
|
||||
m.chat.OnNewMessageReceived(msg) // MUST BE BEFORE STATE UPDATE
|
||||
}
|
||||
state.UpdateMessages(msg)
|
||||
|
||||
case *packet.TrustInfo:
|
||||
|
||||
Reference in New Issue
Block a user