summaryrefslogtreecommitdiff
path: root/internal/client/ui/core/network
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2024-12-05 14:11:28 +0200
committerKyren223 <Kyren223@proton.me>2024-12-05 14:11:28 +0200
commit8087907b4b942c7d8c9296c3fd0e1f08d5d88694 (patch)
treec0a58a78503443b11df7027b415b6406d3b8178b /internal/client/ui/core/network
parent37cd043920aa92189d9ae19e7631968290e4d352 (diff)
Refactored how the core UI looks
Diffstat (limited to 'internal/client/ui/core/network')
-rw-r--r--internal/client/ui/core/network/network.go170
1 files changed, 0 insertions, 170 deletions
diff --git a/internal/client/ui/core/network/network.go b/internal/client/ui/core/network/network.go
deleted file mode 100644
index 3c24350..0000000
--- a/internal/client/ui/core/network/network.go
+++ /dev/null
@@ -1,170 +0,0 @@
-package network
-
-import (
- "strings"
-
- tea "github.com/charmbracelet/bubbletea"
- "github.com/charmbracelet/lipgloss"
- "github.com/kyren223/eko/internal/client/gateway"
- "github.com/kyren223/eko/internal/client/ui"
- "github.com/kyren223/eko/internal/client/ui/colors"
- "github.com/kyren223/eko/internal/client/ui/core/chat"
- "github.com/kyren223/eko/internal/client/ui/core/state"
- "github.com/kyren223/eko/internal/packet"
-)
-
-var (
- width = 24
- sepStyle = lipgloss.NewStyle().Width(0).
- Border(lipgloss.ThickBorder(), false, true, false, false)
- nameStyle = lipgloss.NewStyle().
- Margin(0, 0, 1).Padding(1).Width(width).Align(lipgloss.Center).
- Border(lipgloss.ThickBorder(), false, false, true)
- margin = 3
- frequencyStyle = lipgloss.NewStyle().
- Margin(0, margin).Padding(0, 1).Width(width - (margin * 2)).
- Align(lipgloss.Left)
- symbol = "# "
-)
-
-type Model struct {
- history []func(m *Model)
- networkIndex int
- index int
- focus bool
- chat chat.Model
-}
-
-func New() Model {
- chat := chat.New()
-
- return Model{
- focus: false,
- index: 0,
- chat: chat,
- }
-}
-
-func (m Model) Init() tea.Cmd {
- return nil
-}
-
-func (m Model) View() string {
- if m.Network() == nil {
- return ""
- }
-
- var builder strings.Builder
-
- bg := lipgloss.Color(m.Network().BgHexColor)
- fg := lipgloss.Color(m.Network().FgHexColor)
- nameStyle := nameStyle.Background(bg).Foreground(fg)
- if m.focus {
- nameStyle = nameStyle.BorderForeground(colors.Focus)
- }
- builder.WriteString(nameStyle.Render(m.Network().Name))
-
- builder.WriteString("\n")
- for i, frequency := range m.Network().Frequencies {
- frequencyStyle := frequencyStyle.Foreground(lipgloss.Color(frequency.HexColor))
- if m.index == i {
- frequencyStyle = frequencyStyle.Background(colors.BackgroundHighlight)
- }
- builder.WriteString(frequencyStyle.Render(symbol + frequency.Name))
- builder.WriteString("\n")
- }
-
- sidebar := builder.String()
- sep := sepStyle.Height(ui.Height)
- if m.focus {
- sep = sep.BorderForeground(colors.Focus)
- }
- sidebar = lipgloss.JoinHorizontal(lipgloss.Top, sidebar, sep.String())
-
- result := lipgloss.JoinHorizontal(lipgloss.Top, sidebar, m.chat.View())
-
- return result
-}
-
-func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
- switch msg := msg.(type) {
- case *packet.SwapFrequencies:
- // Pop first by shifting to the left
- copy(m.history, m.history[1:])
- m.history = m.history[:len(m.history)-1]
- case *packet.Error:
- if msg.PktType == packet.PacketSwapFrequencies {
- // Server failed, revert!
- undo := m.history[len(m.history)-1]
- m.history = m.history[:len(m.history)-1]
- undo(&m)
- }
-
- case tea.KeyMsg:
- key := msg.String()
- switch key {
- case "K":
- if 0 < m.index {
- return m.Swap(-1)
- }
- case "J":
- if m.index < m.FrequenciesLength()-1 {
- return m.Swap(1)
- }
- case "k":
- m.index = max(0, m.index-1)
- case "j":
- m.index = min(m.FrequenciesLength()-1, m.index+1)
-
- case "ctrl+d":
- frequencyId := m.Network().Frequencies[m.index].ID
- return m, gateway.Send(&packet.DeleteFrequency{
- Frequency: frequencyId,
- })
-
- }
- }
- return m, nil
-}
-
-func (m *Model) Focus() {
- m.focus = true
-}
-
-func (m *Model) Blur() {
- m.focus = false
-}
-
-func (m Model) Swap(dir int) (Model, tea.Cmd) {
- cmd := gateway.Send(&packet.SwapFrequencies{
- Network: m.Network().ID,
- Pos1: m.index,
- Pos2: m.index + dir,
- })
- tmp := m.Network().Frequencies[m.index]
- m.Network().Frequencies[m.index] = m.Network().Frequencies[m.index+dir]
- m.Network().Frequencies[m.index+dir] = tmp
- m.index += dir
- m.history = append(m.history, func(m *Model) {
- m.index -= dir
- tmp := m.Network().Frequencies[m.index]
- m.Network().Frequencies[m.index] = m.Network().Frequencies[m.index+dir]
- m.Network().Frequencies[m.index+dir] = tmp
- })
- return m, cmd
-}
-
-func (m *Model) Set(index int) {
- m.networkIndex = index
-}
-
-func (m Model) FrequenciesLength() int {
- return len(m.Network().Frequencies)
-}
-
-func (m Model) Network() *packet.FullNetwork {
- if m.networkIndex < 0 || m.networkIndex > len(state.State.Networks)-1 {
- return nil
- }
- return &state.State.Networks[m.networkIndex]
-}