const searchInput = document.getElementById('search-input'); const searchResults = document.getElementById('search-results'); let searchTimeout; let availableExtensions = []; searchInput.addEventListener('input', (e) => { const query = e.target.value; clearTimeout(searchTimeout); if (query.length < 2) { searchResults.classList.remove('active'); searchResults.innerHTML = ''; searchInput.style.borderRadius = '99px'; return; } searchTimeout = setTimeout(() => { fetchSearh(query); }, 300); }); document.addEventListener('click', (e) => { if (!e.target.closest('.search-wrapper')) { searchResults.classList.remove('active'); searchInput.style.borderRadius = '99px'; } }); async function fetchSearh(query) { try { let apiUrl = `/api/search?q=${encodeURIComponent(query)}`; let extensionName = null; let finalQuery = query; const parts = query.split(':'); if (parts.length >= 2) { const potentialExtension = parts[0].trim().toLowerCase(); const foundExtension = availableExtensions.find(ext => ext.toLowerCase() === potentialExtension); if (foundExtension) { extensionName = foundExtension; finalQuery = parts.slice(1).join(':').trim(); if (finalQuery.length === 0) { renderSearchResults([]); return; } apiUrl = `/api/search/${extensionName}?q=${encodeURIComponent(finalQuery)}`; } } const res = await fetch(apiUrl); const data = await res.json(); const resultsWithExtension = (data.results || []).map(anime => { if (extensionName) { return { ...anime, isExtensionResult: true, extensionName: extensionName }; } return anime; }); renderSearchResults(resultsWithExtension); } catch (err) { console.error("Search Error:", err); } } async function loadContinueWatching() { const token = localStorage.getItem('token'); if (!token) return; try { const res = await fetch('/api/list/filter?status=watching&entry_type=ANIME', { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` } }); if (!res.ok) return; const data = await res.json(); const list = data.results || []; renderContinueWatching('my-status', list); } catch (err) { console.error('Continue Watching Error:', err); } } function renderContinueWatching(id, list) { const container = document.getElementById(id); if (!container) return; container.innerHTML = ''; if (list.length === 0) { container.innerHTML = `
Ep ${progressText} - ${item.source}
${score}% • ${ep}