From ef7bf3822a509c0508dff326ebb7af1d3aacf5c2 Mon Sep 17 00:00:00 2001 From: ayn2op Date: Sat, 14 Mar 2026 17:00:42 -0400 Subject: [PATCH] refactor(ui/chat): make (*messagesList).delete command-based --- internal/ui/chat/messages_list.go | 47 +++++++++++++++---------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/internal/ui/chat/messages_list.go b/internal/ui/chat/messages_list.go index a61a276..e796b39 100644 --- a/internal/ui/chat/messages_list.go +++ b/internal/ui/chat/messages_list.go @@ -890,8 +890,7 @@ func (ml *messagesList) HandleEvent(event tcell.Event) tview.Command { ml.edit() return nil case keybind.Matches(event, ml.cfg.Keybinds.MessagesList.Delete.Keybind): - ml.delete() - return nil + return ml.delete() case keybind.Matches(event, ml.cfg.Keybinds.MessagesList.DeleteConfirm.Keybind): ml.confirmDelete() return nil @@ -1269,7 +1268,9 @@ func (ml *messagesList) edit() { func (ml *messagesList) confirmDelete() { onChoice := func(choice string) { if choice == "Yes" { - ml.delete() + if command := ml.delete(); command != nil { + command() + } } } @@ -1280,34 +1281,32 @@ func (ml *messagesList) confirmDelete() { ) } -func (ml *messagesList) delete() { - msg, err := ml.selectedMessage() +func (ml *messagesList) delete() tview.Command { + selectedMessage, err := ml.selectedMessage() if err != nil { slog.Error("failed to get selected message", "err", err) - return + return nil } - if msg.GuildID.IsValid() { - me, _ := ml.chatView.state.Cabinet.Me() - if msg.Author.ID != me.ID && !ml.chatView.state.HasPermissions(msg.ChannelID, discord.PermissionManageMessages) { - slog.Error("failed to delete message; missing relevant permissions", "channel_id", msg.ChannelID, "message_id", msg.ID) - return + return func() tcell.Event { + if selectedMessage.GuildID.IsValid() { + me, _ := ml.chatView.state.Cabinet.Me() + if selectedMessage.Author.ID != me.ID && !ml.chatView.state.HasPermissions(selectedMessage.ChannelID, discord.PermissionManageMessages) { + slog.Error("failed to delete message; missing relevant permissions", "channel_id", selectedMessage.ChannelID, "message_id", selectedMessage.ID) + return nil + } } - } - selected := ml.chatView.SelectedChannel() - if selected == nil { - return - } + if err := ml.chatView.state.DeleteMessage(selectedMessage.ChannelID, selectedMessage.ID, ""); err != nil { + slog.Error("failed to delete message", "channel_id", selectedMessage.ChannelID, "message_id", selectedMessage.ID, "err", err) + return nil + } - if err := ml.chatView.state.DeleteMessage(selected.ID, msg.ID, ""); err != nil { - slog.Error("failed to delete message", "channel_id", selected.ID, "message_id", msg.ID, "err", err) - return - } - - if err := ml.chatView.state.MessageRemove(selected.ID, msg.ID); err != nil { - slog.Error("failed to delete message", "channel_id", selected.ID, "message_id", msg.ID, "err", err) - return + if err := ml.chatView.state.MessageRemove(selectedMessage.ChannelID, selectedMessage.ID); err != nil { + slog.Error("failed to delete message", "channel_id", selectedMessage.ChannelID, "message_id", selectedMessage.ID, "err", err) + return nil + } + return nil } }