From d4ca377a72a04c814d7241e8937ce3cfdca7f00c Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Tue, 24 Dec 2024 17:52:01 +0200 Subject: Made the message view more stateful by remembering where in the view the user was --- internal/client/ui/core/chat/chat.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'internal/client/ui/core/chat') 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, -- cgit v1.3.1