diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-01-14 19:09:18 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-01-14 19:09:18 +0200 |
| commit | 58c6a6d38a5ebbd7bfc9c698227b931a2252e140 (patch) | |
| tree | fd08e25f2c53e6f035a90b02de615c7190856b21 /internal/client/ui/core | |
| parent | 2e1707c45bc78523fa91880dcd407ea886863a68 (diff) | |
Added the ability to delete messages in frequencies
Diffstat (limited to 'internal/client/ui/core')
| -rw-r--r-- | internal/client/ui/core/chat/chat.go | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/internal/client/ui/core/chat/chat.go b/internal/client/ui/core/chat/chat.go index 8130910..bebb72f 100644 --- a/internal/client/ui/core/chat/chat.go +++ b/internal/client/ui/core/chat/chat.go @@ -67,8 +67,9 @@ type Model struct { receiverIndex int frequencyIndex int - offset int - index int + offset int + index int + selectedMessage *snowflake.ID messagesHeight int maxMessagesHeight int @@ -112,6 +113,7 @@ func (m *Model) Prerender() { // if m.messagesCache == nil || messagesHeight != m.messagesHeight { // // Re-render // } + m.selectedMessage = nil messages := m.renderMessages(messagesHeight) m.messagesCache = &messages m.messagesHeight = messagesHeight @@ -154,6 +156,8 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) { return m, cmd } + var cmd tea.Cmd + switch msg := msg.(type) { case tea.KeyMsg: key := msg.String() @@ -175,16 +179,26 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) { // Also for the first time a user scrolls there will be a visual // glitch that doesn't show the top message being selected m.Scroll(10000) // Large numbers can slow this!!!! - case "G": - fallthrough case "enter": + m.locked = true + m.vi.SetMode(viminput.InsertMode) + fallthrough + case "G": m.offset = SnapToBottom m.index = -1 + + case "x", "X", "d", "D": + if m.selectedMessage != nil { + log.Println("deleting message:", m.selectedMessage) + cmd = gateway.Send(&packet.DeleteMessage{ + Message: *m.selectedMessage, + }) + } } } m.Prerender() - return m, nil + return m, cmd } func (m *Model) Focus() { @@ -527,6 +541,8 @@ func (m *Model) renderMessageGroup(group []data.Message, remaining *int, height *remaining-- // For the header if selectedIndex != -1 { + m.selectedMessage = &group[selectedIndex].ID + if selectedIndex == len(group)-1 { buf = m.renderHeader(group[selectedIndex], true) } else { |
