export function applyUserRoleUI(user, refs) { const { usernameDisplay, roleBadge } = refs; if (!user || !usernameDisplay || !roleBadge) return; usernameDisplay.textContent = user.username || "unknown"; const roleBadges = { admin: 'Admin', operator: 'Operator', viewer: 'Viewer', }; if (roleBadges[user.role]) { roleBadge.innerHTML = roleBadges[user.role]; } else { roleBadge.textContent = user.role || "user"; } roleBadge.classList.remove( "bg-purple-900/50", "text-purple-300", "border", "border-purple-800", "bg-blue-900/50", "text-blue-300", "border-blue-800", "bg-slate-700", "text-slate-300", "border-slate-600", ); if (user.role === "admin") { roleBadge.classList.add( "bg-purple-900/50", "text-purple-300", "border", "border-purple-800", ); } else if (user.role === "operator") { roleBadge.classList.add( "bg-blue-900/50", "text-blue-300", "border", "border-blue-800", ); } else { roleBadge.classList.add( "bg-slate-700", "text-slate-300", "border", "border-slate-600", ); } // Helper: unhide an element by ID in both topbar and sidebar const unhide = (id) => { const el = document.getElementById(id); if (el) el.classList.remove("hidden"); }; if (user.role === "admin") { unhide("users-link"); unhide("plugins-link"); unhide("logs-link"); unhide("sol-publish-link"); } if (user.role === "admin" || user.role === "operator") { unhide("build-link"); unhide("notifications-link"); unhide("enrollment-link"); } if (user.role !== "viewer") { unhide("scripts-link"); unhide("file-share-link"); } } export async function applyThumbnailWallVisibility(user) { if (!user || user.role === "viewer") return; try { const res = await fetch("/api/settings/thumbnails", { credentials: "include" }); if (!res.ok) return; const data = await res.json(); if (data?.thumbnails?.wallEnabled === false) return; document.querySelectorAll("#screenshots-link").forEach((el) => el.classList.remove("hidden")); } catch {} }