feat(chat): update dm node on presence update (#814)

This commit is contained in:
RedSlime. 2026-07-19 13:38:31 +05:30 • committed by GitHub
parent 2e05191900
commit 2501deac82
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 19 additions and 0 deletions

View file

@ -74,6 +74,19 @@ func (gt *guildsTree) resetNodeIndex() {
gt.dmRootNode = nil
}
func (gt *guildsTree) updateDMNodeStyle(userID discord.UserID) {
channel, err := gt.chat.state.Cabinet.CreatePrivateChannel(userID)
if err != nil {
return
}
node, ok := gt.channelNodeByID[channel.ID]
if node == nil || !ok {
return
}
gt.setNodeLineStyle(node, gt.channelNodeStyle(*channel))
}
func (gt *guildsTree) createFolderNode(folder gateway.GuildFolder, guildsByID map[discord.GuildID]*gateway.GuildCreateEvent) {
name := "Folder"
if folder.Name != "" {

View file

@ -264,6 +264,8 @@ func (m *Model) Update(msg tview.Msg) tview.Cmd {
return tview.Batch(m.onMessageCreate(eventMsg), m.listen())
case *gateway.MessageUpdateEvent:
m.onMessageUpdate(eventMsg)
case *gateway.PresenceUpdateEvent:
m.onPresenceUpdate(eventMsg)
case *gateway.MessageDeleteEvent:
m.onMessageDelete(eventMsg)

View file

@ -115,6 +115,10 @@ func (m *Model) notify(message gateway.MessageCreateEvent) tview.Cmd {
}
}
func (m *Model) onPresenceUpdate(presence *gateway.PresenceUpdateEvent) {
m.guildsTree.updateDMNodeStyle(presence.User.ID)
}
func (m *Model) onMessageUpdate(message *gateway.MessageUpdateEvent) {
selectedChannel, ok := m.SelectedChannel()
if !ok || selectedChannel.ID != message.ChannelID {