diff --git a/cmd/guilds_tree.go b/cmd/guilds_tree.go index 4b7ef5c..eb438d7 100644 --- a/cmd/guilds_tree.go +++ b/cmd/guilds_tree.go @@ -216,8 +216,18 @@ func (gt *guildsTree) onSelected(node *tview.TreeNode) { go discordState.ReadState.MarkRead(channel.ID, channel.LastMessageID) + messages, err := discordState.Messages(channel.ID, uint(gt.cfg.MessagesLimit)) + if err != nil { + slog.Error("failed to get messages", "err", err, "channel_id", channel.ID, "limit", gt.cfg.MessagesLimit) + return + } + + if guildID := channel.GuildID; guildID.IsValid() { + app.messagesList.requestGuildMembers(guildID, messages) + } + app.messagesList.reset() - app.messagesList.drawMsgs(channel.ID) + app.messagesList.drawMsgs(messages) app.messagesList. ScrollToEnd(). SetTitle(gt.channelToString(*channel)) diff --git a/cmd/messages_list.go b/cmd/messages_list.go index 52df007..019fd9c 100644 --- a/cmd/messages_list.go +++ b/cmd/messages_list.go @@ -62,24 +62,8 @@ func newMessagesList(cfg *config.Config) *messagesList { return ml } -func (ml *messagesList) drawMsgs(cID discord.ChannelID) { - msgs, err := discordState.Messages(cID, uint(ml.cfg.MessagesLimit)) - if err != nil { - slog.Error("failed to get messages", "err", err, "channel_id", cID) - return - } - - channel, err := discordState.Cabinet.Channel(cID) - if err != nil { - slog.Error("failed to get channel from state", "channel_id", cID, "err", err) - return - } - - if guildID := channel.GuildID; guildID.IsValid() { - ml.requestGuildMembers(guildID, msgs) - } - - for _, m := range slices.Backward(msgs) { +func (ml *messagesList) drawMsgs(messages []discord.Message) { + for _, m := range slices.Backward(messages) { ml.createMsg(m) } } diff --git a/cmd/state.go b/cmd/state.go index f8f01aa..62c0324 100644 --- a/cmd/state.go +++ b/cmd/state.go @@ -178,8 +178,14 @@ func onMessageUpdate(message *gateway.MessageUpdateEvent) { func onMessageDelete(message *gateway.MessageDeleteEvent) { if app.guildsTree.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) + return + } + app.messagesList.reset() - app.messagesList.drawMsgs(message.ChannelID) + app.messagesList.drawMsgs(messages) app.Draw() } }