// ========== ERROR LOG VIEWER ========== (function() { // Inject modal HTML injectModal('error-log-modal', '

📋 Error Logs

Loading error logs...
'); const modal = document.getElementById('error-log-modal'); const content = document.getElementById('error-log-content'); const viewBtn = document.getElementById('view-error-logs'); const refreshBtn = document.getElementById('error-log-refresh'); const clearBtn = document.getElementById('error-log-clear'); const closeBtn = document.getElementById('error-log-close'); async function loadErrorLogs() { content.innerHTML = '
Loading error logs...
'; try { const response = await fetch('/api/v1/error-logs'); const data = await response.json(); if (data.success && data.logs) { if (data.logs.length === 0) { content.innerHTML = '
✅ No errors logged! Everything is working smoothly.
'; } else { content.innerHTML = data.logs.map(log => { const date = new Date(log.timestamp).toLocaleString(); return `
${date} ERROR
${escapeHtml(log.context)}: ${escapeHtml(log.error)} ${log.details ? `
${escapeHtml(log.details)}` : ''}
`; }).join(''); } } else { content.innerHTML = '
❌ Failed to load error logs
'; } } catch (error) { content.innerHTML = `
❌ Error loading logs: ${error.message}
`; } } async function clearErrorLogs() { if (!confirm('Clear all error logs?')) return; try { const response = await secureFetch('/api/v1/error-logs', { method: 'DELETE' }); const data = await response.json(); if (data.success) { showNotification('✅ Error logs cleared', 'success', 3000); loadErrorLogs(); } else { showNotification('❌ Failed to clear logs', 'error', 3000); } } catch (error) { showNotification(`❌ Error: ${error.message}`, 'error', 3000); } } viewBtn?.addEventListener('click', () => { modal.classList.add('show'); loadErrorLogs(); }); refreshBtn?.addEventListener('click', loadErrorLogs); clearBtn?.addEventListener('click', clearErrorLogs); wireModal(modal, closeBtn); })();