refactor: modularize into multiple functions to reduce complexity
This commit is contained in:
parent
7eac041b80
commit
097b96f841
2 changed files with 25 additions and 15 deletions
17
discordo.go
17
discordo.go
|
|
@ -175,13 +175,7 @@ func onGuildsTreeViewSelected(gn *tview.TreeNode) {
|
|||
rootN := channelsTreeView.GetRoot()
|
||||
rootN.ClearChildren()
|
||||
// Top-level channels
|
||||
for _, c := range cs {
|
||||
if (c.Type == discord.GuildText || c.Type == discord.GuildNews) && (c.ParentID == 0 || c.ParentID == discord.NullChannelID) {
|
||||
cn := ui.NewTextChannelTreeNode(c)
|
||||
rootN.AddChild(cn)
|
||||
continue
|
||||
}
|
||||
}
|
||||
ui.CreateTopLevelTreeNodes(rootN, cs)
|
||||
// Category channels
|
||||
CategoryLoop:
|
||||
for _, c := range cs {
|
||||
|
|
@ -201,14 +195,7 @@ CategoryLoop:
|
|||
}
|
||||
}
|
||||
// Second-level channels
|
||||
for _, c := range cs {
|
||||
if (c.Type == discord.GuildText || c.Type == discord.GuildNews) && (c.ParentID != 0 && c.ParentID != discord.NullChannelID) {
|
||||
if pn := ui.GetTreeNodeByReference(c.ParentID, channelsTreeView); pn != nil {
|
||||
cn := ui.NewTextChannelTreeNode(c)
|
||||
pn.AddChild(cn)
|
||||
}
|
||||
}
|
||||
}
|
||||
ui.CreateSecondLevelTreeNodes(channelsTreeView, rootN, cs)
|
||||
|
||||
channelsTreeView.SetCurrentNode(rootN)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,3 +58,26 @@ func GetTreeNodeByReference(r interface{}, treeV *tview.TreeView) (mn *tview.Tre
|
|||
|
||||
return
|
||||
}
|
||||
|
||||
// CreateTopLevelTreeNodes creates treenodes for the top-level (orphan) channels.
|
||||
func CreateTopLevelTreeNodes(rootN *tview.TreeNode, cs []discord.Channel) {
|
||||
for _, c := range cs {
|
||||
if (c.Type == discord.GuildText || c.Type == discord.GuildNews) && (c.ParentID == 0 || c.ParentID == discord.NullChannelID) {
|
||||
cn := NewTextChannelTreeNode(c)
|
||||
rootN.AddChild(cn)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CreateSecondLevelTreeNodes creates treenodes for the second-level (category children) channels.
|
||||
func CreateSecondLevelTreeNodes(channelsTreeView *tview.TreeView, rootN *tview.TreeNode, cs []discord.Channel) {
|
||||
for _, c := range cs {
|
||||
if (c.Type == discord.GuildText || c.Type == discord.GuildNews) && (c.ParentID != 0 && c.ParentID != discord.NullChannelID) {
|
||||
if pn := GetTreeNodeByReference(c.ParentID, channelsTreeView); pn != nil {
|
||||
cn := NewTextChannelTreeNode(c)
|
||||
pn.AddChild(cn)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue