perf(cmd): only request guild members on initial channel load

This commit is contained in:
ayn2op 2025-07-22 22:22:47 -04:00
parent c48fd4e41d
commit a8e7dbd524
3 changed files with 20 additions and 20 deletions

View file

@ -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))

View file

@ -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)
}
}

View file

@ -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()
}
}