summaryrefslogtreecommitdiff
path: root/internal/client/ui/core/core.go
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-01-10 16:49:03 +0200
committerKyren223 <Kyren223@proton.me>2025-01-10 16:49:03 +0200
commit97ca4e2d704bfd949712f7d3476be2ec34c92533 (patch)
tree7705e428d3e8fc58b57b134accc5693195188430 /internal/client/ui/core/core.go
parent4bff6ccf4e0a328766f44312631b09bc8eb98af8 (diff)
Fixed network and frequency list on the client
Diffstat (limited to 'internal/client/ui/core/core.go')
-rw-r--r--internal/client/ui/core/core.go128
1 files changed, 9 insertions, 119 deletions
diff --git a/internal/client/ui/core/core.go b/internal/client/ui/core/core.go
index 1e2bc6a..5c45f05 100644
--- a/internal/client/ui/core/core.go
+++ b/internal/client/ui/core/core.go
@@ -3,15 +3,12 @@ package core
import (
"crypto/ed25519"
"fmt"
- "log"
- "slices"
"time"
"github.com/charmbracelet/bubbles/spinner"
"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"
@@ -22,7 +19,6 @@ import (
"github.com/kyren223/eko/internal/client/ui/core/networklist"
"github.com/kyren223/eko/internal/client/ui/core/state"
"github.com/kyren223/eko/internal/client/ui/loadscreen"
- "github.com/kyren223/eko/internal/data"
"github.com/kyren223/eko/internal/packet"
"github.com/kyren223/eko/pkg/assert"
"github.com/kyren223/eko/pkg/snowflake"
@@ -186,124 +182,16 @@ func (m *Model) updateConnected(msg tea.Msg) tea.Cmd {
}
case *packet.NetworksInfo:
- if msg.Set {
- state.State.Networks = msg.Networks
- } else {
- networks := state.State.Networks
-
- for _, newNetwork := range msg.Networks {
- add := true
- for i, existingNetwork := range networks {
- if existingNetwork.ID == newNetwork.ID {
- add = false
- if newNetwork.Position == -1 {
- newNetwork.Position = existingNetwork.Position
- }
- networks[i] = newNetwork
- break
- }
- }
- if add {
- networks = append(networks, newNetwork)
- }
- }
-
- networks = slices.DeleteFunc(networks, func(network packet.FullNetwork) bool {
- return slices.Contains(msg.RemovedNetworks, network.ID)
- })
- slices.SortFunc(networks, func(a, b packet.FullNetwork) int {
- return a.Position - b.Position
- })
- log.Println(networks)
- state.State.Networks = networks
- }
+ state.UpdateNetworks(msg)
case *packet.MembersInfo:
- var network *packet.FullNetwork
- for i, fullNetwork := range state.State.Networks {
- if fullNetwork.ID == msg.Network {
- network = &state.State.Networks[i]
- }
- }
-
- members := network.Members
- for _, updatedMember := range msg.Members {
- add := true
- for i, existingMember := range members {
- if existingMember.User.ID == updatedMember.User.ID {
- add = false
- members[i] = updatedMember
- break
- }
- }
- if add {
- members = append(members, updatedMember)
- }
- }
-
- members = slices.DeleteFunc(members, func(member data.GetNetworkMembersRow) bool {
- return slices.Contains(msg.RemovedMembers, member.User.ID)
- })
- log.Println(members)
- network.Members = members
+ state.UpdateMembers(msg)
case *packet.FrequenciesInfo:
- var network *packet.FullNetwork
- for i, fullNetwork := range state.State.Networks {
- if fullNetwork.ID == msg.Network {
- network = &state.State.Networks[i]
- }
- }
-
- frequencies := network.Frequencies
- for _, newFrequency := range msg.Frequencies {
- add := true
- for i, existingFrequency := range frequencies {
- if existingFrequency.ID == newFrequency.ID {
- add = false
- if newFrequency.Position == -1 {
- newFrequency.Position = existingFrequency.Position
- }
- frequencies[i] = newFrequency
- break
- }
- }
- if add {
- frequencies = append(frequencies, newFrequency)
- }
- }
-
- frequencies = slices.DeleteFunc(frequencies, func(frequency data.Frequency) bool {
- return slices.Contains(msg.RemovedFrequencies, frequency.ID)
- })
- slices.SortFunc(frequencies, func(a, b data.Frequency) int {
- return int(a.Position - b.Position)
- })
- log.Println(frequencies)
- network.Frequencies = frequencies
+ state.UpdateFrequencies(msg)
case *packet.MessagesInfo:
- for _, id := range msg.RemovedMessages {
- 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)
-
- }
+ state.UpdateMessages(msg)
case tea.KeyMsg:
switch msg.String() {
@@ -317,9 +205,11 @@ func (m *Model) updateConnected(msg tea.Msg) tea.Cmd {
case FocusFrequencyList:
if m.frequencyCreationPopup == nil {
index := m.networkList.Index()
- network := state.State.Networks[index]
- popup := frequencycreation.New(network.ID)
- m.frequencyCreationPopup = &popup
+ networkId := state.NetworkId(index)
+ if networkId != nil {
+ popup := frequencycreation.New(*networkId)
+ m.frequencyCreationPopup = &popup
+ }
}
}