v1.8.21: fix library — remove orphaned initAuth body causing script crash, fix main tag

This commit is contained in:
2026-05-28 21:42:58 +00:00
parent a53816ccfe
commit c534c00b16
+1 -40
View File
@@ -340,7 +340,7 @@ main {
<!-- Header --> <!-- Header -->
<div id="universal-header"></div> <div id="universal-header"></div>
<main class="max-w-6xl" mx-auto px-4 lg:px-8 py-8"> <main class="max-w-6xl mx-auto px-4 lg:px-8 py-8">
<!-- Search + Filters --> <!-- Search + Filters -->
<div class="glass rounded-3xl p-6 mb-6"> <div class="glass rounded-3xl p-6 mb-6">
@@ -623,45 +623,6 @@ async function toggleFav(bookId, btn, e) {
// ── Auth Nav ───────────────────────────────────────────────────────────────
return; }
currentUser = await r.json();
checkActiveImport();
nav.innerHTML = `<div class="relative" id="user-menu-wrap">
<button onclick="document.getElementById('udrop').classList.toggle('hidden')" class="glass flex items-center gap-2 px-3 py-2 rounded-xl text-xs hover:border-primary/40 transition-colors">
<span class="msym text-base text-primary">person</span>
<span class="hidden sm:inline max-w-[80px] truncate">${currentUser.name}</span>
<span class="msym text-sm text-on-surface-variant">expand_more</span>
</button>
<div id="udrop" class="hidden absolute right-0 top-full mt-1 glass rounded-xl p-2 min-w-[160px] z-50 shadow-xl">
<div class="px-3 py-2 border-b border-outline-variant/30 mb-1">
<p class="text-xs font-bold">${currentUser.name}</p>
<p class="text-[10px] text-primary">${currentUser.role_display||currentUser.role}</p>
</div>
${currentUser.role==='admin'?'<a href="/admin" class="flex items-center gap-2 px-3 py-2 rounded-lg text-xs text-on-surface-variant hover:text-primary hover:bg-primary/5"><span class="msym text-sm">admin_panel_settings</span>Admin</a>':''}
<button onclick="doLogout()" class="w-full flex items-center gap-2 px-3 py-2 rounded-lg text-xs text-error hover:bg-red-900/10">
<span class="msym text-sm">logout</span>خروج
</button>
</div>
</div>`;
document.addEventListener('click',e=>{const w=document.getElementById('user-menu-wrap');if(w&&!w.contains(e.target))document.getElementById('udrop')?.classList.add('hidden')});
// Show upload if permitted
const perms = currentUser.permissions || [];
const canUpload = Array.isArray(perms)
? perms.includes('upload')
: (perms.upload === true);
const isAdmin = currentUser.role === 'admin' || currentUser.role === 'librarian';
if(canUpload || isAdmin) {
document.getElementById('upload-btn-wrap').classList.remove('hidden');
}
} catch(e) {}
}
function doLogout() {
fetch('/auth/logout',{method:'POST',headers:{'Authorization':'Bearer '+userToken}});
localStorage.removeItem('rag_token');
window.location.reload();
}
// ── Filters ──────────────────────────────────────────────────────────────── // ── Filters ────────────────────────────────────────────────────────────────
function setFilter(type, value, btn) { function setFilter(type, value, btn) {