let apiKey = localStorage.getItem('apiKey'); function updateUI() { const hasKey = !!apiKey; document.getElementById('noKeySection').classList.toggle('hidden', hasKey); document.getElementById('hasKeySection').classList.toggle('hidden', !hasKey); document.getElementById('uploadSection').classList.toggle('hidden', !hasKey); document.getElementById('filesSection').classList.toggle('hidden', !hasKey); if (hasKey) { document.getElementById('apiKeyDisplay').textContent = apiKey; loadFiles(); } } async function generateKey() { const messageDiv = document.getElementById('authMessage'); try { const response = await fetch('/add-user', { method: 'POST' }); const result = await response.json(); if (response.ok) { apiKey = result.api_key; localStorage.setItem('apiKey', apiKey); messageDiv.innerHTML = '
'; updateUI(); } else { messageDiv.innerHTML = ``; } } catch (error) { messageDiv.innerHTML = ''; } } function useExistingKey() { const key = document.getElementById('existingKey').value.trim(); const messageDiv = document.getElementById('authMessage'); if (!key) { messageDiv.innerHTML = ''; return; } apiKey = key; localStorage.setItem('apiKey', apiKey); messageDiv.innerHTML = ''; document.getElementById('existingKey').value = ''; updateUI(); } function clearKey() { apiKey = null; localStorage.removeItem('apiKey'); document.getElementById('authMessage').innerHTML = ''; updateUI(); } async function uploadFiles() { const input = document.getElementById('fileInput'); const files = input.files; const messageDiv = document.getElementById('uploadMessage'); if (files.length === 0) { messageDiv.innerHTML = ''; return; } const formData = new FormData(); for (let file of files) { formData.append('files', file); } try { const response = await fetch('/upload', { method: 'POST', headers: { 'X-API-Key': apiKey }, body: formData }); const result = await response.json(); if (response.ok) { messageDiv.innerHTML = ''; input.value = ''; loadFiles(); } else { messageDiv.innerHTML = ``; } } catch (error) { messageDiv.innerHTML = ''; } } async function loadFiles() { if (!apiKey) return; try { const response = await fetch('/files', { headers: { 'X-API-Key': apiKey } }); const files = await response.json(); const fileList = document.getElementById('fileList'); if (response.status === 401) { document.getElementById('authMessage').innerHTML = ''; clearKey(); return; } if (files.length === 0) { fileList.innerHTML = '