diff --git a/src/server/server.ts b/src/server/server.ts index 8f5da22..b3f130f 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -1192,6 +1192,42 @@ export const server = createServer( // ignore; fallback to no roles } // Render dashboard with selected guild context; show dashboard nav + // If caller requested a fragment, render only the page template (no layout) + const fragment = + url.searchParams.get("fragment") || url.searchParams.get("ajax"); + if (fragment) { + const pageFile = path.join(viewsDir, "pages", `${page}.ejs`); + const pageLocals = { + appName: pkg.name ?? "Amayo Bot", + user, + guilds, + selectedGuild: guildId, + selectedGuildId: guildId, + selectedGuildName, + guildConfig, + guildRoles, + page, + hideNavbar: false, + useDashboardNav: true, + }; + try { + const fragmentHtml = await ejs.renderFile(pageFile, pageLocals, { + async: true, + }); + res.writeHead( + 200, + applySecurityHeadersForRequest(req, { + "Content-Type": "text/html; charset=utf-8", + }) + ); + res.end(fragmentHtml); + return; + } catch (err) { + console.warn("Failed rendering page fragment:", err); + // fallthrough to full render + } + } + await renderTemplate(req, res, "dashboard", { appName: pkg.name ?? "Amayo Bot", user, diff --git a/src/server/views/pages/dashboard.ejs b/src/server/views/pages/dashboard.ejs index 0151ba5..853a262 100644 --- a/src/server/views/pages/dashboard.ejs +++ b/src/server/views/pages/dashboard.ejs @@ -44,6 +44,7 @@ <% } %> +
<% if (typeof page !== 'undefined' && page === 'settings' && selectedGuild) { %>
@@ -73,8 +74,20 @@ <% }) %> <% } else { %> - -
No se pudo obtener roles desde la API. Introduce IDs manualmente separadas por coma.
+ <% const fallbackStaff = (guildConfig && Array.isArray(guildConfig.staff) ? guildConfig.staff.map(String) : (guildConfig && guildConfig.staff ? String(guildConfig.staff).split(',') : [])) || []; %> + <% if (fallbackStaff.length) { %> +
+ +
+ + <% } else { %> + +
No se pudo obtener roles desde la API ni hay roles guardados. Introduce IDs manualmente separadas por coma.
+ <% } %> <% } %>
@@ -133,7 +146,56 @@ }); })(); + <% } %> +
+ +