diff options
| author | Kyren223 <Kyren223@proton.me> | 2024-12-21 16:54:43 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2024-12-21 16:54:43 +0200 |
| commit | 90c54591cc3db27ef90893c8fe166c39279a4805 (patch) | |
| tree | 9db9e001360a3e709f565da6286940957dff4000 /internal/client/ui/core/chat | |
| parent | 4db087dbe44795a895febef14e8c7634f84719b5 (diff) | |
Implemented remembering messages in frequencies
Diffstat (limited to 'internal/client/ui/core/chat')
| -rw-r--r-- | internal/client/ui/core/chat/chat.go | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/internal/client/ui/core/chat/chat.go b/internal/client/ui/core/chat/chat.go index 83edc8f..12a39d0 100644 --- a/internal/client/ui/core/chat/chat.go +++ b/internal/client/ui/core/chat/chat.go @@ -1,6 +1,7 @@ package chat import ( + "log" "strconv" "strings" "time" @@ -337,20 +338,55 @@ func (m *Model) sendMessage() tea.Cmd { // } func (m *Model) SetReceiver(receiverIndex int) { - if m.receiverIndex == nil || *m.receiverIndex != receiverIndex { - m.index = -1 + if m.receiverIndex != nil && *m.receiverIndex == receiverIndex { + return } + m.ResetBeforeSwitch() m.receiverIndex = &receiverIndex m.frequencyIndex = nil + m.RestoreAfterSwitch() } func (m *Model) SetFrequency(networkIndex, frequencyIndex int) { - if m.frequencyIndex == nil || *m.frequencyIndex != frequencyIndex { - m.index = -1 + if m.frequencyIndex != nil && *m.frequencyIndex == frequencyIndex { + return } + m.ResetBeforeSwitch() m.receiverIndex = nil m.frequencyIndex = &frequencyIndex m.networkIndex = networkIndex + m.RestoreAfterSwitch() +} + +func (m *Model) ResetBeforeSwitch() { + source := m.frequencyIndex + if source == nil { + source = m.receiverIndex + } + if source == nil { + return + } + + log.Println("Resetting", source) + state.State.IncompleteMessages[snowflake.ID(*source)] = m.vi.String() + m.vi.Reset() + m.index = -1 +} + +func (m *Model) RestoreAfterSwitch() { + source := m.frequencyIndex + if source == nil { + source = m.receiverIndex + } + if source == nil { + return + } + + log.Println("Restoring", source) + msgs := state.State.IncompleteMessages + if val, ok := msgs[snowflake.ID(*source)]; ok { + m.vi.SetString(val) + } } func (m *Model) renderMessage(message data.Message, builder *strings.Builder, header bool) int { |
