This commit is contained in:
2025-12-18 11:19:01 -05:00
parent 3e3d9ed89b
commit 2327e330de
11 changed files with 93 additions and 65 deletions

View File

@@ -652,7 +652,11 @@ export default function Player({ user }) {
}, [currentTrackUuid]);
// Always define queueFooter, fallback to Close button if user is not available
const isDJ = (user && user.roles.includes('dj')) || ENVIRONMENT === "Dev";
// Normalize roles to lowercase for case-insensitive comparison
const userRoles = Array.isArray(user?.roles)
? user.roles.map((r) => (typeof r === 'string' ? r.toLowerCase() : r)).filter(Boolean)
: [];
const isDJ = userRoles.includes('dj') || userRoles.includes('admin') || ENVIRONMENT === "Dev";
const queueFooter = isDJ
? (
<div className="flex gap-2 justify-end">

View File

@@ -14,7 +14,6 @@ export default function BreadcrumbNav({ currentPage }) {
<React.Fragment key={key}>
<a
href={href}
data-astro-reload
className={`px-3 py-1.5 rounded-full transition-colors ${isActive
? "bg-neutral-200 dark:bg-neutral-700 font-semibold text-neutral-900 dark:text-white"
: "text-neutral-500 dark:text-neutral-400 hover:text-neutral-900 dark:hover:text-white hover:bg-neutral-100 dark:hover:bg-neutral-800"

View File

@@ -68,7 +68,8 @@ export default function RequestManagement() {
}
};
useEffect(() => { fetchJobs(); }, []);
// Initial load shows the skeleton; subsequent polling should not
useEffect(() => { fetchJobs(true); }, []);
useEffect(() => {
if (isDialogVisible && selectedRequest) {
// Start polling
@@ -89,7 +90,7 @@ export default function RequestManagement() {
}, [isDialogVisible, selectedRequest?.id]);
useEffect(() => {
const hasActive = requests.some((j) => ["Queued", "Started", "Compressing"].includes(j.status));
if (hasActive && !pollingRef.current) pollingRef.current = setInterval(fetchJobs, 1500);
if (hasActive && !pollingRef.current) pollingRef.current = setInterval(() => fetchJobs(false), 1500);
else if (!hasActive && pollingRef.current) {
clearInterval(pollingRef.current);
pollingRef.current = null;