From 2501deac822adce8389978bf33d18f14ccf8d6a9 Mon Sep 17 00:00:00 2001 From: "RedSlime." <69750444+TheMrRedSlime@users.noreply.github.com> Date: Sun, 19 Jul 2026 13:38:31 +0530 Subject: [PATCH] feat(chat): update dm node on presence update (#814) --- internal/ui/chat/guilds_tree.go | 13 +++++++++++++ internal/ui/chat/model.go | 2 ++ internal/ui/chat/state.go | 4 ++++ 3 files changed, 19 insertions(+) diff --git a/internal/ui/chat/guilds_tree.go b/internal/ui/chat/guilds_tree.go index b7832c3..821147b 100644 --- a/internal/ui/chat/guilds_tree.go +++ b/internal/ui/chat/guilds_tree.go @@ -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 != "" { diff --git a/internal/ui/chat/model.go b/internal/ui/chat/model.go index b7d96a7..1343ea0 100644 --- a/internal/ui/chat/model.go +++ b/internal/ui/chat/model.go @@ -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) diff --git a/internal/ui/chat/state.go b/internal/ui/chat/state.go index 63c0472..264688a 100644 --- a/internal/ui/chat/state.go +++ b/internal/ui/chat/state.go @@ -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 {