summaryrefslogtreecommitdiff
path: root/internal/client/ui/core/core.go
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2024-12-19 18:42:53 +0200
committerKyren223 <Kyren223@proton.me>2024-12-19 18:42:53 +0200
commit6d91f3f9af3efc6e77ec89979fee18366c7b8847 (patch)
tree5a21422d668aa18d219b97880b74ae7da194fa78 /internal/client/ui/core/core.go
parentff032e5e0769cb33fa9075838b2cac3398e725f8 (diff)
Implemented processing data
Diffstat (limited to 'internal/client/ui/core/core.go')
-rw-r--r--internal/client/ui/core/core.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/internal/client/ui/core/core.go b/internal/client/ui/core/core.go
index 5115274..57bac20 100644
--- a/internal/client/ui/core/core.go
+++ b/internal/client/ui/core/core.go
@@ -11,6 +11,7 @@ import (
"github.com/charmbracelet/bubbles/timer"
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/lipgloss"
+ "github.com/google/btree"
"github.com/kyren223/eko/internal/client/gateway"
"github.com/kyren223/eko/internal/client/ui"
"github.com/kyren223/eko/internal/client/ui/core/chat"
@@ -213,6 +214,29 @@ func (m *Model) updateConnected(msg tea.Msg) tea.Cmd {
network.Frequencies = frequencies
}
+ case *packet.MessagesInfo:
+ for _, id := range msg.RemoveMessages {
+ for _, btree := range state.State.Messages {
+ btree.Delete(data.Message{ID: id})
+ }
+ }
+
+ for _, message := range msg.Messages {
+ msgSource := message.FrequencyID
+ if msgSource == nil {
+ msgSource = message.ReceiverID
+ }
+ bt := state.State.Messages[*msgSource]
+ if bt == nil {
+ bt = btree.NewG(2, func(a, b data.Message) bool {
+ return a.ID < b.ID
+ })
+ state.State.Messages[*msgSource] = bt
+ }
+ bt.ReplaceOrInsert(message)
+
+ }
+
case tea.KeyMsg:
key := msg.Type
switch key {