From 07c1aa7298637c28d167bef31434cb4018496624 Mon Sep 17 00:00:00 2001 From: Shni Date: Tue, 14 Oct 2025 23:38:46 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20Mejorar=20la=20selecci=C3=B3n=20de=20se?= =?UTF-8?q?rvidores=20y=20mostrar=20el=20nombre=20del=20servidor=20selecci?= =?UTF-8?q?onado=20en=20la=20navegaci=C3=B3n=20del=20dashboard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/server.ts | 26 ++++++++---- src/server/views/layouts/layout.ejs | 45 +-------------------- src/server/views/pages/select_guild.ejs | 12 ++---- src/server/views/partials/dashboard_nav.ejs | 4 ++ 4 files changed, 28 insertions(+), 59 deletions(-) diff --git a/src/server/server.ts b/src/server/server.ts index 127521c..85c8aa7 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -898,15 +898,23 @@ export const server = createServer( } touchSession(sid!); - // Simple guild list: for demo, fetch guilds where guild.staff contains user.id (not implemented fully) - const guilds = await (async () => { + // Guild list: prefer session-stored guilds from OAuth (accurate), otherwise fallback to DB + const sessionGuilds: Array<{ id: string; name?: string }> = + session?.guilds || []; + let guilds: Array<{ id: string; name: string }> = []; + if (sessionGuilds && sessionGuilds.length) { + guilds = sessionGuilds.map((g: any) => ({ + id: String(g.id), + name: String(g.name || g.id), + })); + } else { try { - const rows = await prisma.guild.findMany({ take: 10 }); - return rows.map((r) => ({ id: r.id, name: r.name })); + const rows = await prisma.guild.findMany({ take: 50 }); + guilds = rows.map((r) => ({ id: r.id, name: r.name })); } catch { - return []; + guilds = []; } - })(); + } // /dashboard -> main dashboard if (url.pathname === "/dashboard" || url.pathname === "/dashboard/") { @@ -936,12 +944,16 @@ export const server = createServer( if (parts.length >= 2) { const guildId = parts[1]; const page = parts[2] || "overview"; - // Render dashboard with selected guild context; hide global navbar for server view + // find a nicer display name for selected guild + const found = guilds.find((g) => String(g.id) === String(guildId)); + const selectedGuildName = found ? found.name : guildId; + // Render dashboard with selected guild context; show dashboard nav await renderTemplate(req, res, "dashboard", { appName: pkg.name ?? "Amayo Bot", user, guilds, selectedGuild: guildId, + selectedGuildName, page, hideNavbar: false, useDashboardNav: true, diff --git a/src/server/views/layouts/layout.ejs b/src/server/views/layouts/layout.ejs index e32dcdf..8bf5589 100644 --- a/src/server/views/layouts/layout.ejs +++ b/src/server/views/layouts/layout.ejs @@ -31,50 +31,7 @@ <%- body %> - + diff --git a/src/server/views/pages/select_guild.ejs b/src/server/views/pages/select_guild.ejs index 147e884..e852f2d 100644 --- a/src/server/views/pages/select_guild.ejs +++ b/src/server/views/pages/select_guild.ejs @@ -6,8 +6,9 @@
- -
- -
diff --git a/src/server/views/partials/dashboard_nav.ejs b/src/server/views/partials/dashboard_nav.ejs index 81b676f..b293346 100644 --- a/src/server/views/partials/dashboard_nav.ejs +++ b/src/server/views/partials/dashboard_nav.ejs @@ -13,6 +13,10 @@ avatar <%= user.username %> + | + <% if (typeof selectedGuildName !== 'undefined' && selectedGuildName) { %> + <%= selectedGuildName %> + <% } %> Salir <% } else { %> Entrar