summaryrefslogtreecommitdiff
path: root/internal/client/ui
diff options
context:
space:
mode:
Diffstat (limited to 'internal/client/ui')
-rw-r--r--internal/client/ui/core/chat/chat.go16
-rw-r--r--internal/client/ui/core/state/state.go18
2 files changed, 24 insertions, 10 deletions
diff --git a/internal/client/ui/core/chat/chat.go b/internal/client/ui/core/chat/chat.go
index 90e8d0d..0d8f22c 100644
--- a/internal/client/ui/core/chat/chat.go
+++ b/internal/client/ui/core/chat/chat.go
@@ -255,26 +255,34 @@ func (m *Model) SetFrequency(networkIndex, frequencyIndex int) tea.Cmd {
}
func (m *Model) ResetBeforeSwitch() {
- m.index = -1
if m.frequencyIndex != -1 && m.networkIndex != -1 {
network := state.State.Networks[m.networkIndex]
frequencyId := network.Frequencies[m.frequencyIndex].ID
log.Println("Saving", frequencyId)
- state.State.IncompleteMessages[frequencyId] = m.vi.String()
+ state.State.FrequencyState[frequencyId] = state.Frequency{
+ IncompleteMessage: m.vi.String(),
+ Offset: m.offset,
+ MaxHeight: m.maxMessagesHeight,
+ }
m.vi.Reset()
+ m.offset = SnapToBottom
+ m.maxMessagesHeight = -1
+ m.index = -1
} else if m.receiverIndex != -1 {
// TODO: receiver
}
}
func (m *Model) RestoreAfterSwitch() tea.Cmd {
- msgs := state.State.IncompleteMessages
+ msgs := state.State.FrequencyState
if m.frequencyIndex != -1 && m.networkIndex != -1 {
network := state.State.Networks[m.networkIndex]
frequencyId := network.Frequencies[m.frequencyIndex].ID
log.Println("Restoring", frequencyId)
if val, ok := msgs[frequencyId]; ok {
- m.vi.SetString(val)
+ m.vi.SetString(val.IncompleteMessage)
+ m.offset = val.Offset
+ m.maxMessagesHeight = val.MaxHeight
}
return gateway.Send(&packet.RequestMessages{
ReceiverID: nil,
diff --git a/internal/client/ui/core/state/state.go b/internal/client/ui/core/state/state.go
index 762cf2f..3f9cb5a 100644
--- a/internal/client/ui/core/state/state.go
+++ b/internal/client/ui/core/state/state.go
@@ -7,18 +7,24 @@ import (
"github.com/kyren223/eko/pkg/snowflake"
)
+type Frequency struct {
+ IncompleteMessage string
+ Offset int
+ MaxHeight int
+}
+
type state struct {
// Key is either a frequency or receiver
- IncompleteMessages map[snowflake.ID]string
- LastFrequency map[snowflake.ID]snowflake.ID // key is network
+ FrequencyState map[snowflake.ID]Frequency
+ LastFrequency map[snowflake.ID]snowflake.ID // key is network
Messages map[snowflake.ID]*btree.BTreeG[data.Message]
Networks []packet.FullNetwork
}
var State state = state{
- IncompleteMessages: map[snowflake.ID]string{},
- LastFrequency: map[snowflake.ID]snowflake.ID{},
- Messages: map[snowflake.ID]*btree.BTreeG[data.Message]{},
- Networks: []packet.FullNetwork{},
+ FrequencyState: map[snowflake.ID]Frequency{},
+ LastFrequency: map[snowflake.ID]snowflake.ID{},
+ Messages: map[snowflake.ID]*btree.BTreeG[data.Message]{},
+ Networks: []packet.FullNetwork{},
}