diff --git a/cmd/guilds_tree.go b/cmd/guilds_tree.go index 544ff11..0764ef5 100644 --- a/cmd/guilds_tree.go +++ b/cmd/guilds_tree.go @@ -15,19 +15,18 @@ import ( type GuildsTree struct { *tview.TreeView - root *tview.TreeNode selectedChannelID discord.ChannelID } func newGuildsTree() *GuildsTree { gt := &GuildsTree{ TreeView: tview.NewTreeView(), - - root: tview.NewTreeNode(""), } + root := tview.NewTreeNode("") + gt.SetRoot(root) + gt.SetTopLevel(1) - gt.SetRoot(gt.root) gt.SetGraphics(cfg.Theme.GuildsTree.Graphics) gt.SetBackgroundColor(tcell.GetColor(cfg.Theme.BackgroundColor)) gt.SetSelectedFunc(gt.onSelected) @@ -45,33 +44,34 @@ func newGuildsTree() *GuildsTree { return gt } -func (gt *GuildsTree) createGuildFolderNode(parent *tview.TreeNode, gf gateway.GuildFolder) { +func (gt *GuildsTree) createFolderNode(folder gateway.GuildFolder) { var name string - if gf.Name != "" { - name = fmt.Sprintf("[%s]%s[-]", gf.Color.String(), gf.Name) - } else { + if folder.Name == "" { 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 { - log.Printf("guild %v not found in state: %v", gid, err) + log.Printf("guild %v not found in state: %v\n", gID, err) continue } - gt.createGuildNode(n, *g) + gt.createGuildNode(folderNode, *g) } } 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 { @@ -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) { diff --git a/cmd/state.go b/cmd/state.go index b517bcf..e9db4bf 100644 --- a/cmd/state.go +++ b/cmd/state.go @@ -36,16 +36,10 @@ func openState(token string) error { discordState.AddHandler(discordState.onMessageCreate) discordState.AddHandler(discordState.onMessageDelete) - discordState.StateLog = discordState.onLog discordState.OnRequest = append(discordState.Client.OnRequest, discordState.onRequest) - return discordState.Open(context.TODO()) } -func (s *State) onLog(err error) { - log.Println(err.Error()) -} - func (s *State) onRequest(r httpdriver.Request) error { req, ok := r.(*httpdriver.DefaultRequest) if ok { @@ -56,32 +50,34 @@ func (s *State) onRequest(r httpdriver.Request) error { } func (s *State) onReady(r *gateway.ReadyEvent) { + root := mainFlex.guildsTree.GetRoot() dmNode := tview.NewTreeNode("Direct Messages") - mainFlex.guildsTree.root.AddChild(dmNode) + root.AddChild(dmNode) folders := r.UserSettings.GuildFolders if len(folders) == 0 { for _, g := range r.Guilds { - mainFlex.guildsTree.createGuildNode(mainFlex.guildsTree.root, g.Guild) + mainFlex.guildsTree.createGuildNode(root, g.Guild) } } 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 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 { - log.Println(err) + log.Printf("guild %v not found in state: %v\n", gID, err) continue } - mainFlex.guildsTree.createGuildNode(mainFlex.guildsTree.root, *g) + mainFlex.guildsTree.createGuildNode(root, *g) } 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) }