summaryrefslogtreecommitdiff
path: root/internal/client/ui
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-01-12 17:57:54 +0200
committerKyren223 <Kyren223@proton.me>2025-01-12 17:57:54 +0200
commitbff19b516e69284b0a96087a094a9d811d630b85 (patch)
tree2aafe081e77c0dabe569ad09882fabd4eb52d3f3 /internal/client/ui
parent1c09d173d733b491970841add0a20bf2ecf078cd (diff)
Fixed network positioning issues
Diffstat (limited to 'internal/client/ui')
-rw-r--r--internal/client/ui/core/core.go7
-rw-r--r--internal/client/ui/core/networklist/networklist.go19
-rw-r--r--internal/client/ui/core/state/state.go9
3 files changed, 22 insertions, 13 deletions
diff --git a/internal/client/ui/core/core.go b/internal/client/ui/core/core.go
index 4dc50e2..10088bf 100644
--- a/internal/client/ui/core/core.go
+++ b/internal/client/ui/core/core.go
@@ -132,7 +132,7 @@ func (m *Model) updateNotConnected(msg tea.Msg) tea.Cmd {
state.State.UserID = (*snowflake.ID)(&msg)
m.connected = true
m.timeout = initialTimeout
- return m.timer.Stop()
+ return tea.Batch(m.timer.Stop(), gateway.Send(&packet.GetUserData{}))
case gateway.ConnectionFailed:
log.Println("failed to connect:", msg)
@@ -175,7 +175,7 @@ func (m *Model) updateConnected(msg tea.Msg) tea.Cmd {
state.State.UserID = nil
m.connected = false
m.timeout = initialTimeout
- return tea.Batch(gateway.Connect(m.privKey, connectionTimeout), m.loading.Init())
+ return gateway.Connect(m.privKey, connectionTimeout)
case *packet.Error:
err := "new connection from another location, closing this one"
@@ -183,6 +183,9 @@ func (m *Model) updateConnected(msg tea.Msg) tea.Cmd {
return ui.Transition(ui.NewAuth())
}
+ case *packet.SetUserData:
+ state.FromJsonUserData(msg.Data)
+
case *packet.NetworksInfo:
state.UpdateNetworks(msg)
networkId := state.NetworkId(m.networkList.Index())
diff --git a/internal/client/ui/core/networklist/networklist.go b/internal/client/ui/core/networklist/networklist.go
index 00d5d12..5e3780f 100644
--- a/internal/client/ui/core/networklist/networklist.go
+++ b/internal/client/ui/core/networklist/networklist.go
@@ -16,10 +16,10 @@ var (
sepStyle = lipgloss.NewStyle().Width(0).
Border(lipgloss.ThickBorder(), false, true, false, false)
- selectedIndicator = "šŸ­€\nā–Œ\nšŸ­›"
- trustedUsersIcon = IconStyle("ī· ", colors.Turquoise, colors.DarkerCyan)
- trustedUsersButton = trustedUsersIcon.Margin(0, 1, 1).String()
- trustedUsersButtonSelected = lipgloss.JoinHorizontal(
+ selectedIndicator = "šŸ­€\nā–Œ\nšŸ­›"
+ trustedUsersIcon = IconStyle("ī· ", colors.Turquoise, colors.DarkerCyan)
+ peersButton = trustedUsersIcon.Margin(0, 1, 1).String()
+ peersButtonSelected = lipgloss.JoinHorizontal(
ui.Center,
selectedIndicator,
trustedUsersIcon.Margin(0, 1, 1, 0).String(),
@@ -69,18 +69,19 @@ func (m Model) View() string {
var builder strings.Builder
builder.WriteString("\n")
if m.index == PeersIndex {
- builder.WriteString(trustedUsersButtonSelected)
+ builder.WriteString(peersButtonSelected)
} else {
- builder.WriteString(trustedUsersButton)
+ builder.WriteString(peersButton)
}
builder.WriteString("\n")
- for i, network := range state.State.Networks {
+ for i, networkId := range state.Data.Networks {
+ network := state.State.Networks[networkId]
+
icon := IconStyle(network.Icon,
lipgloss.Color(network.FgHexColor),
lipgloss.Color(network.BgHexColor),
)
- networkId := state.NetworkId(m.index)
- if networkId != nil && *networkId == i {
+ if m.index == i {
builder.WriteString(lipgloss.JoinHorizontal(
ui.Center,
selectedIndicator,
diff --git a/internal/client/ui/core/state/state.go b/internal/client/ui/core/state/state.go
index b253d71..9b8c053 100644
--- a/internal/client/ui/core/state/state.go
+++ b/internal/client/ui/core/state/state.go
@@ -5,6 +5,7 @@ import (
"slices"
"github.com/google/btree"
+ "github.com/kyren223/eko/internal/client/gateway"
"github.com/kyren223/eko/internal/data"
"github.com/kyren223/eko/internal/packet"
"github.com/kyren223/eko/pkg/assert"
@@ -68,7 +69,7 @@ func UpdateNetworks(info *packet.NetworksInfo) {
}
for _, network := range info.Networks {
- if _, ok := networks[network.ID]; !ok {
+ if !slices.Contains(Data.Networks, network.ID) {
Data.Networks = append(Data.Networks, network.ID)
}
@@ -85,6 +86,10 @@ func UpdateNetworks(info *packet.NetworksInfo) {
State.Users[user.ID] = user
}
}
+
+ gateway.SendAsync(&packet.SetUserData{
+ Data: JsonUserData(),
+ })
}
func UpdateFrequencies(info *packet.FrequenciesInfo) {
@@ -182,7 +187,7 @@ func JsonUserData() string {
return string(bytes)
}
-func FromJsonUserDat(s string) {
+func FromJsonUserData(s string) {
var data UserData
err := json.Unmarshal([]byte(s), &data)
if err != nil {