feat: add support for voice channels

This commit is contained in:
rigormorrtiss 2021-08-15 12:37:07 +04:00
parent e287066f23
commit 8ee54de596
2 changed files with 31 additions and 15 deletions

View file

@ -157,14 +157,20 @@ func onSessionReady(r *gateway.ReadyEvent) {
for _, c := range g.Channels {
switch c.Type {
case discord.GuildCategory:
cNode := tview.NewTreeNode(c.Name).
cn := tview.NewTreeNode(c.Name).
SetReference(c)
gn.AddChild(cNode)
gn.AddChild(cn)
case discord.GuildText, discord.GuildNews:
if c.ParentID == 0 || c.ParentID == discord.NullChannelID {
cNode := tview.NewTreeNode("[::d]#" + c.Name + "[-:-:-]").
cn := tview.NewTreeNode("[::d]#" + c.Name + "[::-]").
SetReference(c)
gn.AddChild(cNode)
gn.AddChild(cn)
}
case discord.GuildStageVoice, discord.GuildVoice:
if c.ParentID == 0 || c.ParentID == discord.NullChannelID {
cn := tview.NewTreeNode("[::d]🔊" + c.Name + "[::-]").
SetReference(c)
gn.AddChild(cn)
}
}
}
@ -181,10 +187,19 @@ func onGuildsTreeViewSelected(n *tview.TreeNode) {
case discord.GuildCategory:
if len(n.GetChildren()) == 0 {
for _, c := range currentGuild.Channels {
if (c.Type == discord.GuildText || c.Type == discord.GuildNews) && c.ParentID == r.ID {
cn := tview.NewTreeNode("[::d]#" + c.Name + "[-:-:-]").
SetReference(c)
n.AddChild(cn)
switch c.Type {
case discord.GuildText, discord.GuildNews:
if c.ParentID == r.ID {
cn := tview.NewTreeNode("[::d]#" + c.Name + "[::-]").
SetReference(c)
n.AddChild(cn)
}
case discord.GuildStageVoice, discord.GuildVoice:
if c.ParentID == r.ID {
cn := tview.NewTreeNode("[::d]🔊" + c.Name + "[::-]").
SetReference(c)
n.AddChild(cn)
}
}
}
} else {
@ -193,7 +208,6 @@ func onGuildsTreeViewSelected(n *tview.TreeNode) {
case discord.GuildText, discord.GuildNews:
if len(n.GetChildren()) == 0 {
currentChannel = r
app.SetFocus(messageInputField)
messagesTextView.Clear()
messagesTextView.SetTitle(r.Name)
@ -219,7 +233,6 @@ func onGuildsTreeViewSelected(n *tview.TreeNode) {
}
case discord.GuildNewsThread, discord.GuildPrivateThread, discord.GuildPublicThread:
currentChannel = r
app.SetFocus(messageInputField)
messagesTextView.Clear()
messagesTextView.SetTitle(r.Name)
@ -230,6 +243,9 @@ func onGuildsTreeViewSelected(n *tview.TreeNode) {
util.WriteMessage(messagesTextView, clientID, m)
}
}()
case discord.GuildStageVoice, discord.GuildVoice:
messagesTextView.Clear()
messagesTextView.SetTitle(r.Name)
}
}
}

View file

@ -4,14 +4,14 @@ import (
"github.com/rivo/tview"
)
func NewMainFlex(treeV *tview.TreeView, textV *tview.TextView, i *tview.InputField) (mainFlex *tview.Flex) {
rightFlex := tview.NewFlex().
func NewMainFlex(treeV *tview.TreeView, textV *tview.TextView, i *tview.InputField) (mf *tview.Flex) {
rf := tview.NewFlex().
SetDirection(tview.FlexRow).
AddItem(textV, 0, 1, false).
AddItem(i, 3, 1, false)
mainFlex = tview.NewFlex().
mf = tview.NewFlex().
AddItem(treeV, 30, 1, false).
AddItem(rightFlex, 0, 1, false)
AddItem(rf, 0, 1, false)
return mainFlex
return mf
}