From ac1436b4d4e132f92b48b3afdf3f430e2846b41a Mon Sep 17 00:00:00 2001 From: ayn2op Date: Mon, 24 Nov 2025 14:58:14 -0500 Subject: [PATCH] refactor(cmd): move selected*ID fields to chatView struct --- cmd/chatview.go | 4 ++++ cmd/guilds_tree.go | 8 +++----- cmd/message_input.go | 16 ++++++++-------- cmd/messages_list.go | 16 ++++++++-------- cmd/state.go | 6 +++--- 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/cmd/chatview.go b/cmd/chatview.go index 928befd..e0c4655 100644 --- a/cmd/chatview.go +++ b/cmd/chatview.go @@ -7,6 +7,7 @@ import ( "github.com/ayn2op/discordo/internal/keyring" "github.com/ayn2op/discordo/internal/ui" "github.com/ayn2op/tview" + "github.com/diamondburned/arikawa/v3/discord" "github.com/gdamore/tcell/v2" ) @@ -27,6 +28,9 @@ type chatView struct { messagesList *messagesList messageInput *messageInput + selectedGuildID discord.GuildID + selectedChannelID discord.ChannelID + app *tview.Application cfg *config.Config } diff --git a/cmd/guilds_tree.go b/cmd/guilds_tree.go index 26b629c..0977855 100644 --- a/cmd/guilds_tree.go +++ b/cmd/guilds_tree.go @@ -18,9 +18,7 @@ import ( type guildsTree struct { *tview.TreeView - cfg *config.Config - selectedChannelID discord.ChannelID - selectedGuildID discord.GuildID + cfg *config.Config } func newGuildsTree(cfg *config.Config) *guildsTree { @@ -199,8 +197,8 @@ func (gt *guildsTree) onSelected(node *tview.TreeNode) { app.SetFocus(app.chatView.messageInput) } - gt.selectedChannelID = channel.ID - gt.selectedGuildID = channel.GuildID + app.chatView.selectedChannelID = channel.ID + app.chatView.selectedGuildID = channel.GuildID case nil: // Direct messages channels, err := discordState.PrivateChannels() if err != nil { diff --git a/cmd/message_input.go b/cmd/message_input.go index 8a9b959..a025081 100644 --- a/cmd/message_input.go +++ b/cmd/message_input.go @@ -155,7 +155,7 @@ func (mi *messageInput) paste() { } func (mi *messageInput) send() { - if !app.chatView.guildsTree.selectedChannelID.IsValid() { + if !app.chatView.selectedChannelID.IsValid() { return } @@ -164,7 +164,7 @@ func (mi *messageInput) send() { return } - text = processText(app.chatView.guildsTree.selectedChannelID, []byte(text)) + text = processText(app.chatView.selectedChannelID, []byte(text)) if text == "" { return } @@ -185,8 +185,8 @@ func (mi *messageInput) send() { } else { data := mi.sendMessageData data.Content = text - if _, err := discordState.SendMessageComplex(app.chatView.guildsTree.selectedChannelID, *data); err != nil { - slog.Error("failed to send message in channel", "channel_id", app.chatView.guildsTree.selectedChannelID, "err", err) + if _, err := discordState.SendMessageComplex(app.chatView.selectedChannelID, *data); err != nil { + slog.Error("failed to send message in channel", "channel_id", app.chatView.selectedChannelID, "err", err) } } @@ -236,7 +236,7 @@ func expandMentions(cID discord.ChannelID, src []byte) []byte { return mentionRegex.ReplaceAllFunc(src, func(input []byte) []byte { output := input name := string(input[1:]) - discordState.MemberStore.Each(app.chatView.guildsTree.selectedGuildID, func(m *discord.Member) bool { + discordState.MemberStore.Each(app.chatView.selectedGuildID, func(m *discord.Member) bool { if strings.EqualFold(m.User.Username, name) && channelHasUser(cID, m.User.ID) { output = []byte(m.User.ID.Mention()) return true @@ -259,8 +259,8 @@ func (mi *messageInput) tabComplete(isAuto bool) { } pos := posEnd - (len(name) + 1) - gID := app.chatView.guildsTree.selectedGuildID - cID := app.chatView.guildsTree.selectedChannelID + gID := app.chatView.selectedGuildID + cID := app.chatView.selectedChannelID if !isAuto { if mi.cfg.AutocompleteLimit == 0 { @@ -504,7 +504,7 @@ func (mi *messageInput) addTitle(s string) { } func (mi *messageInput) openFilePicker() { - if !app.chatView.guildsTree.selectedChannelID.IsValid() { + if !app.chatView.selectedChannelID.IsValid() { return } diff --git a/cmd/messages_list.go b/cmd/messages_list.go index 63f9e5a..e4d558d 100644 --- a/cmd/messages_list.go +++ b/cmd/messages_list.go @@ -240,7 +240,7 @@ func (ml *messagesList) selectedMessage() (*discord.Message, error) { return nil, errors.New("no message is currently selected") } - m, err := discordState.Cabinet.Message(app.chatView.guildsTree.selectedChannelID, ml.selectedMessageID) + m, err := discordState.Cabinet.Message(app.chatView.selectedChannelID, ml.selectedMessageID) if err != nil { return nil, fmt.Errorf("could not retrieve selected message: %w", err) } @@ -249,7 +249,7 @@ func (ml *messagesList) selectedMessage() (*discord.Message, error) { } func (ml *messagesList) selectedMessageIndex() (int, error) { - ms, err := discordState.Cabinet.Messages(app.chatView.guildsTree.selectedChannelID) + ms, err := discordState.Cabinet.Messages(app.chatView.selectedChannelID) if err != nil { return -1, err } @@ -295,9 +295,9 @@ func (ml *messagesList) onInputCapture(event *tcell.EventKey) *tcell.EventKey { } func (ml *messagesList) _select(name string) { - ms, err := discordState.Cabinet.Messages(app.chatView.guildsTree.selectedChannelID) + ms, err := discordState.Cabinet.Messages(app.chatView.selectedChannelID) if err != nil { - slog.Error("failed to get messages", "err", err, "channel_id", app.chatView.guildsTree.selectedChannelID) + slog.Error("failed to get messages", "err", err, "channel_id", app.chatView.selectedChannelID) return } @@ -622,16 +622,16 @@ func (ml *messagesList) delete() { } } - if err := discordState.DeleteMessage(app.chatView.guildsTree.selectedChannelID, msg.ID, ""); err != nil { - slog.Error("failed to delete message", "channel_id", app.chatView.guildsTree.selectedChannelID, "message_id", msg.ID, "err", err) + if err := discordState.DeleteMessage(app.chatView.selectedChannelID, msg.ID, ""); err != nil { + slog.Error("failed to delete message", "channel_id", app.chatView.selectedChannelID, "message_id", msg.ID, "err", err) return } ml.selectedMessageID = 0 ml.Highlight() - if err := discordState.MessageRemove(app.chatView.guildsTree.selectedChannelID, msg.ID); err != nil { - slog.Error("failed to delete message", "channel_id", app.chatView.guildsTree.selectedChannelID, "message_id", msg.ID, "err", err) + if err := discordState.MessageRemove(app.chatView.selectedChannelID, msg.ID); err != nil { + slog.Error("failed to delete message", "channel_id", app.chatView.selectedChannelID, "message_id", msg.ID, "err", err) return } diff --git a/cmd/state.go b/cmd/state.go index 6411e93..5b1f793 100644 --- a/cmd/state.go +++ b/cmd/state.go @@ -146,7 +146,7 @@ func onReady(r *gateway.ReadyEvent) { } func onMessageCreate(message *gateway.MessageCreateEvent) { - if app.chatView.guildsTree.selectedChannelID == message.ChannelID { + if app.chatView.selectedChannelID == message.ChannelID { app.chatView.messagesList.drawMessage(app.chatView.messagesList, message.Message) app.Draw() } @@ -157,13 +157,13 @@ func onMessageCreate(message *gateway.MessageCreateEvent) { } func onMessageUpdate(message *gateway.MessageUpdateEvent) { - if app.chatView.guildsTree.selectedChannelID == message.ChannelID { + if app.chatView.selectedChannelID == message.ChannelID { onMessageDelete(&gateway.MessageDeleteEvent{ID: message.ID, ChannelID: message.ChannelID, GuildID: message.GuildID}) } } func onMessageDelete(message *gateway.MessageDeleteEvent) { - if app.chatView.guildsTree.selectedChannelID == message.ChannelID { + if app.chatView.selectedChannelID == message.ChannelID { messages, err := discordState.Cabinet.Messages(message.ChannelID) if err != nil { slog.Error("failed to get messages from state", "err", err, "channel_id", message.ChannelID)