summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/client/ui/core/chat/chat.go26
-rw-r--r--internal/client/ui/core/core.go4
2 files changed, 17 insertions, 13 deletions
diff --git a/internal/client/ui/core/chat/chat.go b/internal/client/ui/core/chat/chat.go
index afc2c6a..89a066b 100644
--- a/internal/client/ui/core/chat/chat.go
+++ b/internal/client/ui/core/chat/chat.go
@@ -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
}
}
}
diff --git a/internal/client/ui/core/core.go b/internal/client/ui/core/core.go
index 79c8c4f..34a75f5 100644
--- a/internal/client/ui/core/core.go
+++ b/internal/client/ui/core/core.go
@@ -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: