Jelajahi Sumber

fix: append guilds in order

ayn2op 1 tahun lalu
induk
melakukan
aac88ec734
1 mengubah file dengan 10 tambahan dan 17 penghapusan
  1. 10 17
      cmd/state.go

+ 10 - 17
cmd/state.go

@@ -4,10 +4,8 @@ import (
 	"context"
 	"log/slog"
 	"runtime"
-	"slices"
 
 	"github.com/diamondburned/arikawa/v3/api"
-	"github.com/diamondburned/arikawa/v3/discord"
 	"github.com/diamondburned/arikawa/v3/gateway"
 	"github.com/diamondburned/arikawa/v3/utils/httputil/httpdriver"
 	"github.com/diamondburned/ningen/v3"
@@ -64,22 +62,17 @@ func (s *State) onReady(r *gateway.ReadyEvent) {
 	dmNode.SetColor(tcell.GetColor(app.cfg.Theme.GuildsTree.PrivateChannelColor))
 	root.AddChild(dmNode)
 
-	// Track guilds that have a parent (folder) to add orphan channels later
-	var folderGuildIds []discord.GuildID
 	for _, folder := range r.UserSettings.GuildFolders {
-		// Hide unnamed, single-server folders
-		if folder.Name == "" && len(folder.GuildIDs) < 2 {
-			continue
-		}
-		folderGuildIds = append(folderGuildIds, folder.GuildIDs...)
-
-		app.guildsTree.createFolderNode(folder)
-	}
-
-	// add orphan (without folder) guilds to guilds tree
-	for _, guild := range r.Guilds {
-		if !slices.Contains(folderGuildIds, guild.ID) {
-			app.guildsTree.createGuildNode(root, guild.Guild)
+		if folder.ID == 0 && len(folder.GuildIDs) == 1 {
+			g, err := discordState.Cabinet.Guild(folder.GuildIDs[0])
+			if err != nil {
+				slog.Error("failed to get guild from state", "guild_id", g.ID, "err", err)
+				continue
+			}
+
+			app.guildsTree.createGuildNode(root, *g)
+		} else {
+			app.guildsTree.createFolderNode(folder)
 		}
 	}