Refactor
This commit is contained in:
parent
7718781b0b
commit
bf0c54e555
2 changed files with 33 additions and 37 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
26
cmd/state.go
26
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)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue