/** * settings-view.js — Logo upload, QBO import, QBO connection test * Extracted from app.js */ let currentLogoFile = null; export async function checkCurrentLogo() { try { const response = await fetch('/api/logo-info'); if (response.ok) { const data = await response.json(); if (data.hasLogo) { document.getElementById('logo-preview').classList.remove('hidden'); document.getElementById('logo-image').src = data.logoPath + '?t=' + Date.now(); } } } catch (error) { console.error('Error checking logo:', error); } } export async function uploadLogo() { if (!currentLogoFile) { alert('Please select a file first'); return; } const formData = new FormData(); formData.append('logo', currentLogoFile); const statusDiv = document.getElementById('upload-status'); statusDiv.innerHTML = '
Uploading...
'; try { const response = await fetch('/api/upload-logo', { method: 'POST', body: formData }); if (response.ok) { const data = await response.json(); statusDiv.innerHTML = '✓ Logo uploaded successfully!
'; document.getElementById('logo-preview').classList.remove('hidden'); document.getElementById('logo-image').src = data.path + '?t=' + Date.now(); document.getElementById('upload-btn').disabled = true; currentLogoFile = null; document.getElementById('logo-filename').textContent = ''; document.getElementById('logo-upload').value = ''; } else { const error = await response.json(); statusDiv.innerHTML = `✗ Error: ${error.error}
`; } } catch (error) { console.error('Upload error:', error); statusDiv.innerHTML = '✗ Upload failed
'; } } export function initSettingsView() { const logoUpload = document.getElementById('logo-upload'); if (logoUpload) { logoUpload.addEventListener('change', (e) => { const file = e.target.files[0]; if (file) { currentLogoFile = file; document.getElementById('logo-filename').textContent = file.name; document.getElementById('upload-btn').disabled = false; } }); } } export async function checkQboOverdue() { const btn = document.querySelector('button[onclick="checkQboOverdue()"]'); const resultDiv = document.getElementById('qbo-result'); const tbody = document.getElementById('qbo-result-list'); const originalText = btn.innerHTML; btn.innerHTML = '⏳ Connecting to QBO...'; btn.disabled = true; resultDiv.classList.add('hidden'); tbody.innerHTML = ''; try { const response = await fetch('/api/qbo/overdue'); const invoices = await response.json(); if (response.ok) { resultDiv.classList.remove('hidden'); if (invoices.length === 0) { tbody.innerHTML = 'Import abgeschlossen
`; html += `Import fehlgeschlagen
${result.error}
Netzwerkfehler beim Import.