ayn2op 2 лет назад
Родитель
Сommit
bf0c54e555
2 измененных файлов с 33 добавлено и 37 удалено
  1. 22 22
      cmd/guilds_tree.go
  2. 11 15
      cmd/state.go

+ 22 - 22
cmd/guilds_tree.go

@@ -15,19 +15,18 @@ import (
 type GuildsTree struct {
 type GuildsTree struct {
 	*tview.TreeView
 	*tview.TreeView
 
 
-	root              *tview.TreeNode
 	selectedChannelID discord.ChannelID
 	selectedChannelID discord.ChannelID
 }
 }
 
 
 func newGuildsTree() *GuildsTree {
 func newGuildsTree() *GuildsTree {
 	gt := &GuildsTree{
 	gt := &GuildsTree{
 		TreeView: tview.NewTreeView(),
 		TreeView: tview.NewTreeView(),
-
-		root: tview.NewTreeNode(""),
 	}
 	}
 
 
+	root := tview.NewTreeNode("")
+	gt.SetRoot(root)
+
 	gt.SetTopLevel(1)
 	gt.SetTopLevel(1)
-	gt.SetRoot(gt.root)
 	gt.SetGraphics(cfg.Theme.GuildsTree.Graphics)
 	gt.SetGraphics(cfg.Theme.GuildsTree.Graphics)
 	gt.SetBackgroundColor(tcell.GetColor(cfg.Theme.BackgroundColor))
 	gt.SetBackgroundColor(tcell.GetColor(cfg.Theme.BackgroundColor))
 	gt.SetSelectedFunc(gt.onSelected)
 	gt.SetSelectedFunc(gt.onSelected)
@@ -45,33 +44,34 @@ func newGuildsTree() *GuildsTree {
 	return gt
 	return gt
 }
 }
 
 
-func (gt *GuildsTree) createGuildFolderNode(parent *tview.TreeNode, gf gateway.GuildFolder) {
+func (gt *GuildsTree) createFolderNode(folder gateway.GuildFolder) {
 	var name string
 	var name string
-	if gf.Name != "" {
-		name = fmt.Sprintf("[%s]%s[-]", gf.Color.String(), gf.Name)
-	} else {
+	if folder.Name == "" {
 		name = "Folder"
 		name = "Folder"
+	} else {
+		name = fmt.Sprintf("[%s]%s[-]", folder.Color.String(), folder.Name)
 	}
 	}
 
 
-	n := tview.NewTreeNode(name)
-	n.SetExpanded(cfg.Theme.GuildsTree.AutoExpandFolders)
-	parent.AddChild(n)
+	root := gt.GetRoot()
+	folderNode := tview.NewTreeNode(name)
+	folderNode.SetExpanded(cfg.Theme.GuildsTree.AutoExpandFolders)
+	root.AddChild(folderNode)
 
 
-	for _, gid := range gf.GuildIDs {
-		g, err := discordState.Cabinet.Guild(gid)
+	for _, gID := range folder.GuildIDs {
+		g, err := discordState.Cabinet.Guild(gID)
 		if err != nil {
 		if err != nil {
-			log.Printf("guild %v not found in state: %v", gid, err)
+			log.Printf("guild %v not found in state: %v\n", gID, err)
 			continue
 			continue
 		}
 		}
 
 
-		gt.createGuildNode(n, *g)
+		gt.createGuildNode(folderNode, *g)
 	}
 	}
 }
 }
 
 
 func (gt *GuildsTree) createGuildNode(n *tview.TreeNode, g discord.Guild) {
 func (gt *GuildsTree) createGuildNode(n *tview.TreeNode, g discord.Guild) {
-	gn := tview.NewTreeNode(g.Name)
-	gn.SetReference(g.ID)
-	n.AddChild(gn)
+	guildNode := tview.NewTreeNode(g.Name)
+	guildNode.SetReference(g.ID)
+	n.AddChild(guildNode)
 }
 }
 
 
 func (gt *GuildsTree) channelToString(c discord.Channel) string {
 func (gt *GuildsTree) channelToString(c discord.Channel) string {
@@ -121,10 +121,10 @@ func (gt *GuildsTree) createChannelNode(n *tview.TreeNode, c discord.Channel) *t
 		}
 		}
 	}
 	}
 
 
-	cn := tview.NewTreeNode(gt.channelToString(c))
-	cn.SetReference(c.ID)
-	n.AddChild(cn)
-	return cn
+	channelNode := tview.NewTreeNode(gt.channelToString(c))
+	channelNode.SetReference(c.ID)
+	n.AddChild(channelNode)
+	return channelNode
 }
 }
 
 
 func (gt *GuildsTree) createChannelNodes(n *tview.TreeNode, cs []discord.Channel) {
 func (gt *GuildsTree) createChannelNodes(n *tview.TreeNode, cs []discord.Channel) {

+ 11 - 15
cmd/state.go

@@ -36,16 +36,10 @@ func openState(token string) error {
 	discordState.AddHandler(discordState.onMessageCreate)
 	discordState.AddHandler(discordState.onMessageCreate)
 	discordState.AddHandler(discordState.onMessageDelete)
 	discordState.AddHandler(discordState.onMessageDelete)
 
 
-	discordState.StateLog = discordState.onLog
 	discordState.OnRequest = append(discordState.Client.OnRequest, discordState.onRequest)
 	discordState.OnRequest = append(discordState.Client.OnRequest, discordState.onRequest)
-
 	return discordState.Open(context.TODO())
 	return discordState.Open(context.TODO())
 }
 }
 
 
-func (s *State) onLog(err error) {
-	log.Println(err.Error())
-}
-
 func (s *State) onRequest(r httpdriver.Request) error {
 func (s *State) onRequest(r httpdriver.Request) error {
 	req, ok := r.(*httpdriver.DefaultRequest)
 	req, ok := r.(*httpdriver.DefaultRequest)
 	if ok {
 	if ok {
@@ -56,32 +50,34 @@ func (s *State) onRequest(r httpdriver.Request) error {
 }
 }
 
 
 func (s *State) onReady(r *gateway.ReadyEvent) {
 func (s *State) onReady(r *gateway.ReadyEvent) {
+	root := mainFlex.guildsTree.GetRoot()
 	dmNode := tview.NewTreeNode("Direct Messages")
 	dmNode := tview.NewTreeNode("Direct Messages")
-	mainFlex.guildsTree.root.AddChild(dmNode)
+	root.AddChild(dmNode)
 
 
 	folders := r.UserSettings.GuildFolders
 	folders := r.UserSettings.GuildFolders
 	if len(folders) == 0 {
 	if len(folders) == 0 {
 		for _, g := range r.Guilds {
 		for _, g := range r.Guilds {
-			mainFlex.guildsTree.createGuildNode(mainFlex.guildsTree.root, g.Guild)
+			mainFlex.guildsTree.createGuildNode(root, g.Guild)
 		}
 		}
 	} else {
 	} else {
-		for _, gf := range folders {
+		for _, folder := range folders {
 			// If the ID of the guild folder is zero, the guild folder only contains single guild.
 			// If the ID of the guild folder is zero, the guild folder only contains single guild.
-			if gf.ID == 0 {
-				g, err := s.Cabinet.Guild(gf.GuildIDs[0])
+			if folder.ID == 0 {
+				gID := folder.GuildIDs[0]
+				g, err := discordState.Cabinet.Guild(gID)
 				if err != nil {
 				if err != nil {
-					log.Println(err)
+					log.Printf("guild %v not found in state: %v\n", gID, err)
 					continue
 					continue
 				}
 				}
 
 
-				mainFlex.guildsTree.createGuildNode(mainFlex.guildsTree.root, *g)
+				mainFlex.guildsTree.createGuildNode(root, *g)
 			} else {
 			} else {
-				mainFlex.guildsTree.createGuildFolderNode(mainFlex.guildsTree.root, gf)
+				mainFlex.guildsTree.createFolderNode(folder)
 			}
 			}
 		}
 		}
 	}
 	}
 
 
-	mainFlex.guildsTree.SetCurrentNode(mainFlex.guildsTree.root)
+	mainFlex.guildsTree.SetCurrentNode(root)
 	app.SetFocus(mainFlex.guildsTree)
 	app.SetFocus(mainFlex.guildsTree)
 }
 }