Procházet zdrojové kódy

fix(chat): expand lazy tree nodes on first enter

ayn2op před 2 měsíci
rodič
revize
8962b0f8cd
2 změnil soubory, kde provedl 6 přidání a 3 odebrání
  1. 5 2
      internal/ui/chat/guilds_tree.go
  2. 1 1
      internal/ui/chat/state.go

+ 5 - 2
internal/ui/chat/guilds_tree.go

@@ -193,7 +193,7 @@ func (gt *guildsTree) getChannelNodeStyle(channelID discord.ChannelID) tcell.Sty
 }
 
 func (gt *guildsTree) createGuildNode(n *tview.TreeNode, guild discord.Guild) {
-	guildNode := tview.NewTreeNode(guild.Name).SetReference(guild.ID).SetExpandable(true)
+	guildNode := tview.NewTreeNode(guild.Name).SetReference(guild.ID).SetExpandable(true).SetExpanded(false)
 	gt.setNodeLineStyle(guildNode, gt.getGuildNodeStyle(guild.ID))
 	n.AddChild(guildNode)
 	gt.guildNodeByID[guild.ID] = guildNode
@@ -206,7 +206,7 @@ func (gt *guildsTree) createChannelNode(node *tview.TreeNode, channel discord.Ch
 
 	channelNode := tview.NewTreeNode(ui.ChannelToString(channel, gt.cfg.Icons)).SetReference(channel.ID)
 	if channel.Type == discord.GuildForum {
-		channelNode.SetExpandable(true)
+		channelNode.SetExpandable(true).SetExpanded(false)
 	}
 	gt.setNodeLineStyle(channelNode, gt.getChannelNodeStyle(channel.ID))
 	node.AddChild(channelNode)
@@ -279,6 +279,7 @@ func (gt *guildsTree) onSelected(node *tview.TreeNode) {
 
 		ui.SortGuildChannels(channels)
 		gt.createChannelNodes(node, channels)
+		node.Expand()
 	case discord.ChannelID:
 		channel, err := gt.chatView.state.Cabinet.Channel(ref)
 		if err != nil {
@@ -309,6 +310,7 @@ func (gt *guildsTree) onSelected(node *tview.TreeNode) {
 			for _, thread := range forumThreads {
 				gt.createChannelNode(node, thread)
 			}
+			node.Expand()
 			return
 		}
 
@@ -357,6 +359,7 @@ func (gt *guildsTree) onSelected(node *tview.TreeNode) {
 		for _, c := range channels {
 			gt.createChannelNode(node, c)
 		}
+		node.Expand()
 	}
 }
 

+ 1 - 1
internal/ui/chat/state.go

@@ -85,7 +85,7 @@ func (v *View) onReady(event *gateway.ReadyEvent) {
 	// retain stale pointers to detached tree nodes.
 	v.guildsTree.resetNodeIndex()
 
-	dmNode := tview.NewTreeNode("Direct Messages").SetReference(dmNode{}).SetExpandable(true)
+	dmNode := tview.NewTreeNode("Direct Messages").SetReference(dmNode{}).SetExpandable(true).SetExpanded(false)
 	v.guildsTree.dmRootNode = dmNode
 
 	root := v.guildsTree.