let activeFilter = 'all';
let activeSort = 'az';
let isLocalMode = false;
let localEntries = [];
function toggleLibraryMode() {
isLocalMode = !isLocalMode;
const btn = document.getElementById('library-mode-btn');
const onlineContent = document.getElementById('online-content');
const localContent = document.getElementById('local-content');
const svg = btn.querySelector('svg');
const label = btn.querySelector('span');
if (isLocalMode) {
// LOCAL MODE
btn.classList.add('active');
onlineContent.classList.add('hidden');
localContent.classList.remove('hidden');
loadLocalEntries();
svg.innerHTML = `
No anime found in your local library. Click "Scan Library" to scan your folders.
'; return; } // Renderizar grid grid.innerHTML = entries.map(entry => { const title = entry.metadata?.title?.romaji || entry.metadata?.title?.english || entry.id; const cover = entry.metadata?.coverImage?.extraLarge || entry.metadata?.coverImage?.large || '/public/assets/placeholder.jpg'; const score = entry.metadata?.averageScore || '--'; const episodes = entry.metadata?.episodes || '??'; return `${score}% • ${episodes} Eps
Error loading local library. Make sure the backend is running.
'; } } async function scanLocalLibrary() { const btnText = document.getElementById('scan-text'); const originalText = btnText.innerText; btnText.innerText = "Scanning..."; try { const response = await fetch('/api/library/scan?mode=incremental', { method: 'POST' }); if (response.ok) { await loadLocalEntries(); // Mostrar notificación de éxito si tienes sistema de notificaciones if (window.NotificationUtils) { NotificationUtils.show('Library scanned successfully!', 'success'); } } else { throw new Error('Scan failed'); } } catch (err) { console.error("Scan failed", err); alert("Failed to scan library. Check console for details."); // Mostrar notificación de error si tienes sistema de notificaciones if (window.NotificationUtils) { NotificationUtils.show('Failed to scan library', 'error'); } } finally { btnText.innerText = originalText; } } function viewLocalEntry(anilistId) { if (!anilistId) { console.warn('Anime not linked'); return; } window.location.href = `/anime/${anilistId}`; } function renderLocalEntries(entries) { const grid = document.getElementById('local-entries-grid'); grid.innerHTML = entries.map(entry => { const title = entry.metadata?.title?.romaji || entry.metadata?.title?.english || entry.id; const cover = entry.metadata?.coverImage?.extraLarge || entry.metadata?.coverImage?.large || '/public/assets/placeholder.jpg'; const score = entry.metadata?.averageScore || '--'; const episodes = entry.metadata?.episodes || '??'; return `${score}% • ${episodes} Eps