summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/client/ui/core/chat/chat.go14
-rw-r--r--internal/client/ui/core/core.go27
-rw-r--r--internal/client/ui/core/frequencylist/frequencylist.go4
-rw-r--r--internal/client/ui/core/networklist/networklist.go4
4 files changed, 33 insertions, 16 deletions
diff --git a/internal/client/ui/core/chat/chat.go b/internal/client/ui/core/chat/chat.go
index 6ae7cdd..acc4da8 100644
--- a/internal/client/ui/core/chat/chat.go
+++ b/internal/client/ui/core/chat/chat.go
@@ -344,15 +344,15 @@ func (m *Model) SetReceiver(receiverIndex int) {
m.RestoreAfterSwitch()
}
-func (m *Model) SetFrequency(networkIndex, frequencyIndex int) {
+func (m *Model) SetFrequency(networkIndex, frequencyIndex int) tea.Cmd {
if m.frequencyIndex == frequencyIndex && m.networkIndex == networkIndex {
- return
+ return nil
}
m.ResetBeforeSwitch()
m.receiverIndex = -1
m.frequencyIndex = frequencyIndex
m.networkIndex = networkIndex
- m.RestoreAfterSwitch()
+ return m.RestoreAfterSwitch()
}
func (m *Model) ResetBeforeSwitch() {
@@ -368,7 +368,7 @@ func (m *Model) ResetBeforeSwitch() {
}
}
-func (m *Model) RestoreAfterSwitch() {
+func (m *Model) RestoreAfterSwitch() tea.Cmd {
msgs := state.State.IncompleteMessages
if m.frequencyIndex != -1 && m.networkIndex != -1 {
network := state.State.Networks[m.networkIndex]
@@ -377,9 +377,15 @@ func (m *Model) RestoreAfterSwitch() {
if val, ok := msgs[frequencyId]; ok {
m.vi.SetString(val)
}
+ return gateway.Send(&packet.RequestMessages{
+ ReceiverID: nil,
+ FrequencyID: &frequencyId,
+ })
} else if m.receiverIndex != -1 {
// TODO: receiver
}
+
+ return nil
}
func (m *Model) renderMessage(message data.Message, builder *strings.Builder, header bool) int {
diff --git a/internal/client/ui/core/core.go b/internal/client/ui/core/core.go
index f986351..b1ed7e3 100644
--- a/internal/client/ui/core/core.go
+++ b/internal/client/ui/core/core.go
@@ -308,19 +308,22 @@ func (m *Model) updateConnected(msg tea.Msg) tea.Cmd {
return nil
}
+ var cmds []tea.Cmd
var cmd tea.Cmd
- switch m.focus {
- case FocusNetworkList:
- m.networkList, cmd = m.networkList.Update(msg)
- m.frequencyList.SetNetworkIndex(m.networkList.Index())
- m.chat.SetFrequency(m.networkList.Index(), m.frequencyList.Index())
- case FocusFrequencyList:
- m.frequencyList, cmd = m.frequencyList.Update(msg)
- m.chat.SetFrequency(m.networkList.Index(), m.frequencyList.Index())
- case FocusChat:
- m.chat, cmd = m.chat.Update(msg)
- }
- return cmd
+
+ m.networkList, cmd = m.networkList.Update(msg)
+ cmds = append(cmds, cmd)
+
+ m.frequencyList.SetNetworkIndex(m.networkList.Index())
+ m.frequencyList, cmd = m.frequencyList.Update(msg)
+ cmds = append(cmds, cmd)
+
+ cmd = m.chat.SetFrequency(m.networkList.Index(), m.frequencyList.Index())
+ cmds = append(cmds, cmd)
+ m.chat, cmd = m.chat.Update(msg)
+ cmds = append(cmds, cmd)
+
+ return tea.Batch(cmds...)
}
func (m *Model) updateLoadScreenContent() {
diff --git a/internal/client/ui/core/frequencylist/frequencylist.go b/internal/client/ui/core/frequencylist/frequencylist.go
index 98eb975..bc4ef05 100644
--- a/internal/client/ui/core/frequencylist/frequencylist.go
+++ b/internal/client/ui/core/frequencylist/frequencylist.go
@@ -96,6 +96,10 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
}
case tea.KeyMsg:
+ if !m.focus {
+ return m, nil
+ }
+
key := msg.String()
switch key {
case "K":
diff --git a/internal/client/ui/core/networklist/networklist.go b/internal/client/ui/core/networklist/networklist.go
index bdeff54..c510e79 100644
--- a/internal/client/ui/core/networklist/networklist.go
+++ b/internal/client/ui/core/networklist/networklist.go
@@ -120,6 +120,10 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
}
case tea.KeyMsg:
+ if !m.focus {
+ return m, nil
+ }
+
key := msg.String()
switch key {
case "K":