|
@@ -68,7 +68,7 @@ func (gt *guildsTree) createFolderNode(folder gateway.GuildFolder) {
|
|
|
folderNode := tview.NewTreeNode(name).SetExpanded(gt.cfg.Theme.GuildsTree.AutoExpandFolders)
|
|
folderNode := tview.NewTreeNode(name).SetExpanded(gt.cfg.Theme.GuildsTree.AutoExpandFolders)
|
|
|
if folder.Color != 0 {
|
|
if folder.Color != 0 {
|
|
|
folderStyle := tcell.StyleDefault.Foreground(tcell.NewHexColor(int32(folder.Color)))
|
|
folderStyle := tcell.StyleDefault.Foreground(tcell.NewHexColor(int32(folder.Color)))
|
|
|
- folderNode.SetTextStyle(folderStyle)
|
|
|
|
|
|
|
+ gt.setNodeLineStyle(folderNode, folderStyle)
|
|
|
}
|
|
}
|
|
|
gt.GetRoot().AddChild(folderNode)
|
|
gt.GetRoot().AddChild(folderNode)
|
|
|
|
|
|
|
@@ -109,9 +109,8 @@ func (gt *guildsTree) getChannelNodeStyle(channelID discord.ChannelID) tcell.Sty
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (gt *guildsTree) createGuildNode(n *tview.TreeNode, guild discord.Guild) {
|
|
func (gt *guildsTree) createGuildNode(n *tview.TreeNode, guild discord.Guild) {
|
|
|
- guildNode := tview.NewTreeNode(guild.Name).
|
|
|
|
|
- SetReference(guild.ID).
|
|
|
|
|
- SetTextStyle(gt.getGuildNodeStyle(guild.ID))
|
|
|
|
|
|
|
+ guildNode := tview.NewTreeNode(guild.Name).SetReference(guild.ID)
|
|
|
|
|
+ gt.setNodeLineStyle(guildNode, gt.getGuildNodeStyle(guild.ID))
|
|
|
n.AddChild(guildNode)
|
|
n.AddChild(guildNode)
|
|
|
gt.guildNodeByID[guild.ID] = guildNode
|
|
gt.guildNodeByID[guild.ID] = guildNode
|
|
|
}
|
|
}
|
|
@@ -121,13 +120,20 @@ func (gt *guildsTree) createChannelNode(node *tview.TreeNode, channel discord.Ch
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- channelNode := tview.NewTreeNode(ui.ChannelToString(channel, gt.cfg.Icons)).
|
|
|
|
|
- SetReference(channel.ID).
|
|
|
|
|
- SetTextStyle(gt.getChannelNodeStyle(channel.ID))
|
|
|
|
|
|
|
+ channelNode := tview.NewTreeNode(ui.ChannelToString(channel, gt.cfg.Icons)).SetReference(channel.ID)
|
|
|
|
|
+ gt.setNodeLineStyle(channelNode, gt.getChannelNodeStyle(channel.ID))
|
|
|
node.AddChild(channelNode)
|
|
node.AddChild(channelNode)
|
|
|
gt.channelNodeByID[channel.ID] = channelNode
|
|
gt.channelNodeByID[channel.ID] = channelNode
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (gt *guildsTree) setNodeLineStyle(node *tview.TreeNode, style tcell.Style) {
|
|
|
|
|
+ line := node.GetLine()
|
|
|
|
|
+ for i := range line {
|
|
|
|
|
+ line[i].Style = style
|
|
|
|
|
+ }
|
|
|
|
|
+ node.SetLine(line)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func (gt *guildsTree) createChannelNodes(node *tview.TreeNode, channels []discord.Channel) {
|
|
func (gt *guildsTree) createChannelNodes(node *tview.TreeNode, channels []discord.Channel) {
|
|
|
// Preserve exact ordering semantics:
|
|
// Preserve exact ordering semantics:
|
|
|
// 1) top-level non-categories (in input order),
|
|
// 1) top-level non-categories (in input order),
|
|
@@ -243,14 +249,16 @@ func (gt *guildsTree) onSelected(node *tview.TreeNode) {
|
|
|
|
|
|
|
|
hasNoPerm := channel.Type != discord.DirectMessage && channel.Type != discord.GroupDM && !gt.chatView.state.HasPermissions(channel.ID, discord.PermissionSendMessages)
|
|
hasNoPerm := channel.Type != discord.DirectMessage && channel.Type != discord.GroupDM && !gt.chatView.state.HasPermissions(channel.ID, discord.PermissionSendMessages)
|
|
|
gt.chatView.messageInput.SetDisabled(hasNoPerm)
|
|
gt.chatView.messageInput.SetDisabled(hasNoPerm)
|
|
|
|
|
+ var text string
|
|
|
if hasNoPerm {
|
|
if hasNoPerm {
|
|
|
- gt.chatView.messageInput.SetPlaceholder("You do not have permission to send messages in this channel.")
|
|
|
|
|
|
|
+ text = "You do not have permission to send messages in this channel."
|
|
|
} else {
|
|
} else {
|
|
|
- gt.chatView.messageInput.SetPlaceholder("Message...")
|
|
|
|
|
|
|
+ text = "Message..."
|
|
|
if gt.cfg.AutoFocus {
|
|
if gt.cfg.AutoFocus {
|
|
|
gt.chatView.app.SetFocus(gt.chatView.messageInput)
|
|
gt.chatView.app.SetFocus(gt.chatView.messageInput)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ gt.chatView.messageInput.SetPlaceholder(tview.NewLine(tview.NewSegment(text, tcell.StyleDefault.Dim(true))))
|
|
|
case dmNode: // Direct messages folder
|
|
case dmNode: // Direct messages folder
|
|
|
channels, err := gt.chatView.state.PrivateChannels()
|
|
channels, err := gt.chatView.state.PrivateChannels()
|
|
|
if err != nil {
|
|
if err != nil {
|