Implemented fetching existing messages when changing frequencies

This commit is contained in:
2024-12-21 18:29:29 +02:00
parent 3c35c3dbfa
commit e88c5f242d
4 changed files with 33 additions and 16 deletions

View File

@@ -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 {

View File

@@ -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() {

View File

@@ -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":

View File

@@ -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":