summaryrefslogtreecommitdiff
path: root/internal/client/ui/core
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
parentff032e5e0769cb33fa9075838b2cac3398e725f8 (diff)
Implemented processing data
Diffstat (limited to 'internal/client/ui/core')
-rw-r--r--internal/client/ui/core/core.go24
-rw-r--r--internal/client/ui/core/state/state.go11
2 files changed, 33 insertions, 2 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 {
diff --git a/internal/client/ui/core/state/state.go b/internal/client/ui/core/state/state.go
index e40cdc9..ed5ca85 100644
--- a/internal/client/ui/core/state/state.go
+++ b/internal/client/ui/core/state/state.go
@@ -1,11 +1,18 @@
package state
import (
+ "github.com/google/btree"
+ "github.com/kyren223/eko/internal/data"
"github.com/kyren223/eko/internal/packet"
+ "github.com/kyren223/eko/pkg/snowflake"
)
type state struct {
- Networks []packet.FullNetwork
+ Messages map[snowflake.ID]*btree.BTreeG[data.Message]
+ Networks []packet.FullNetwork
}
-var State state = state{}
+var State state = state{
+ Networks: []packet.FullNetwork{},
+ Messages: map[snowflake.ID]*btree.BTreeG[data.Message]{},
+}