perf(cmd): only request guild members on initial channel load
This commit is contained in:
parent
c48fd4e41d
commit
a8e7dbd524
3 changed files with 20 additions and 20 deletions
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue