diff --git a/internal/client/ui/core/core.go b/internal/client/ui/core/core.go index fdaab35..27c6b96 100644 --- a/internal/client/ui/core/core.go +++ b/internal/client/ui/core/core.go @@ -193,7 +193,9 @@ func (m *Model) updateConnected(msg tea.Msg) tea.Cmd { } case FocusNetwork: if m.frequencyCreationPopup == nil { - popup := frequencycreation.New() + index := m.networkList.Index() + network := state.State.Networks[index] + popup := frequencycreation.New(network.ID) m.frequencyCreationPopup = &popup } } diff --git a/internal/client/ui/core/frequencycreation/frequencycreation.go b/internal/client/ui/core/frequencycreation/frequencycreation.go index d7a34a5..43fca8f 100644 --- a/internal/client/ui/core/frequencycreation/frequencycreation.go +++ b/internal/client/ui/core/frequencycreation/frequencycreation.go @@ -13,6 +13,7 @@ import ( "github.com/kyren223/eko/internal/client/ui/layouts/flex" "github.com/kyren223/eko/internal/packet" "github.com/kyren223/eko/pkg/assert" + "github.com/kyren223/eko/pkg/snowflake" ) var ( @@ -76,9 +77,10 @@ type Model struct { perms int nameWidth int selected int + network snowflake.ID } -func New() Model { +func New(network snowflake.ID) Model { name := field.New(width) name.Header = "Frequency Name" name.HeaderStyle = headerStyle @@ -277,7 +279,7 @@ func (m *Model) Select() tea.Cmd { } request := packet.CreateFrequency{ - Network: 0, // TODO: + Network: m.network, Name: m.name.Input.Value(), HexColor: "#" + m.color.Value(), Perms: m.perms, diff --git a/internal/client/ui/core/network/network.go b/internal/client/ui/core/network/network.go index 8be44a3..877654f 100644 --- a/internal/client/ui/core/network/network.go +++ b/internal/client/ui/core/network/network.go @@ -27,17 +27,16 @@ var ( ) type Model struct { - network *packet.FullNetwork - history []func(m *Model) - index int - focus bool + history []func(m *Model) + networkIndex int + index int + focus bool } func New() Model { return Model{ - focus: false, - index: 0, - network: nil, + focus: false, + index: 0, } } @@ -46,22 +45,22 @@ func (m Model) Init() tea.Cmd { } func (m Model) View() string { - if m.network == nil { + if m.Network() == nil { return "" } var builder strings.Builder - bg := lipgloss.Color(m.network.BgHexColor) - fg := lipgloss.Color(m.network.FgHexColor) + 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(nameStyle.Render(m.Network().Name)) builder.WriteString("\n") - for i, frequency := range m.network.Frequencies { + for i, frequency := range m.Network().Frequencies { color := colors.White if frequency.HexColor != nil { color = lipgloss.Color(*frequency.HexColor) @@ -129,31 +128,34 @@ func (m *Model) Blur() { func (m Model) Swap(dir int) (Model, tea.Cmd) { cmd := gateway.Send(&packet.SwapFrequencies{ - Network: m.network.ID, + 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 + 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 + 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) { - if index != -1 { - m.network = &state.State.Networks[index] - } else { - m.network = nil - } + m.networkIndex = index } func (m Model) FrequenciesLength() int { - return len(m.network.Frequencies) + return len(m.Network().Frequencies) +} + +func (m Model) Network() *packet.FullNetwork { + if m.networkIndex < 0 { + return nil + } + return &state.State.Networks[m.networkIndex] }