浏览代码

refactor: move isUnread to util.go

ayntgl 4 年之前
父节点
当前提交
ceae56bca3
共有 2 个文件被更改,包括 22 次插入20 次删除
  1. 2 16
      discord.go
  2. 20 4
      util.go

+ 2 - 16
discord.go

@@ -44,26 +44,12 @@ func onSessionReady(_ *discordgo.Session, r *discordgo.Ready) {
 	n := channelsTree.GetRoot()
 	n.AddChild(dmNode)
 
-	createPrivateChannels(r.PrivateChannels, dmNode)
-	createGuilds(r.Guilds, n)
+	createPrivateChannels(dmNode)
+	createGuilds(n)
 
 	channelsTree.SetCurrentNode(n)
 }
 
-func isUnread(c *discordgo.Channel) bool {
-	if c.LastMessageID == "" {
-		return false
-	}
-
-	for _, rs := range session.State.ReadState {
-		if c.ID == rs.ID {
-			return c.LastMessageID != rs.LastMessageID
-		}
-	}
-
-	return false
-}
-
 func onSessionMessageCreate(_ *discordgo.Session, m *discordgo.MessageCreate) {
 	c, err := session.State.Channel(m.ChannelID)
 	if err != nil {

+ 20 - 4
util.go

@@ -37,7 +37,8 @@ func findByMessageID(mID string) *discordgo.Message {
 	return nil
 }
 
-func createPrivateChannels(cs []*discordgo.Channel, dmNode *tview.TreeNode) {
+func createPrivateChannels(n *tview.TreeNode) {
+	cs := session.State.PrivateChannels
 	sort.Slice(cs, func(i, j int) bool {
 		return cs[i].LastMessageID > cs[j].LastMessageID
 	})
@@ -52,11 +53,12 @@ func createPrivateChannels(cs []*discordgo.Channel, dmNode *tview.TreeNode) {
 
 		cn := tview.NewTreeNode(tag + generateChannelRepr(c) + "[::-]").
 			SetReference(c.ID)
-		dmNode.AddChild(cn)
+		n.AddChild(cn)
 	}
 }
 
-func createGuilds(gs []*discordgo.Guild, rootNode *tview.TreeNode) {
+func createGuilds(n *tview.TreeNode) {
+	gs := session.State.Guilds
 	sort.Slice(gs, func(a, b int) bool {
 		found := false
 		for _, gID := range session.State.Settings.GuildPositions {
@@ -76,7 +78,7 @@ func createGuilds(gs []*discordgo.Guild, rootNode *tview.TreeNode) {
 
 	for _, g := range gs {
 		gn := tview.NewTreeNode(g.Name).Collapse()
-		rootNode.AddChild(gn)
+		n.AddChild(gn)
 
 		cs := g.Channels
 		sort.Slice(cs, func(i, j int) bool {
@@ -185,3 +187,17 @@ func getTreeNodeByReference(r interface{}) (mn *tview.TreeNode) {
 
 	return
 }
+
+func isUnread(c *discordgo.Channel) bool {
+	if c.LastMessageID == "" {
+		return false
+	}
+
+	for _, rs := range session.State.ReadState {
+		if c.ID == rs.ID {
+			return c.LastMessageID != rs.LastMessageID
+		}
+	}
+
+	return false
+}