import { auth } from './api.js'; import { icons } from './icons.js'; import { route, navigate, startRouter } from './router.js'; import { renderDashboard } from './pages/dashboard.js'; import { renderLogin } from './pages/login.js'; import { renderServiceDetail } from './pages/service-detail.js'; import { renderLogs } from './pages/logs.js'; import { renderMonitoring } from './pages/monitoring.js'; import { renderSettings } from './pages/settings.js'; let currentUser = null; function renderSidebar(user) { return `
${icons.rocket(20)}

AutoDeployer

Navigation
${icons.layoutDashboard()} Dashboard
${icons.scrollText()} Logs
${icons.activity()} Monitoring
System
${icons.settings()} Settings
${icons.logOut()} Logout
Logged in as ${user.username}
`; } function setupSidebarEvents() { document.querySelectorAll('.sidebar-link[data-path]').forEach(el => { el.onclick = () => navigate(el.dataset.path); }); const logoutBtn = document.getElementById('logout-btn'); if (logoutBtn) logoutBtn.onclick = async () => { await auth.logout(); location.reload(); }; } async function init() { const app = document.getElementById('app'); // Check auth try { const status = await auth.status(); if (status.setupRequired) { renderLogin(app, true, onLogin); return; } const data = await auth.me(); currentUser = data.user; } catch { renderLogin(app, false, onLogin); return; } // Render app layout app.innerHTML = ` ${renderSidebar(currentUser)}
`; setupSidebarEvents(); // Setup routes const content = document.getElementById('page-content'); route('/', (c) => renderDashboard(c)); route('/services/:id', (c, p) => renderServiceDetail(c, p.id)); route('/logs', (c) => renderLogs(c)); route('/monitoring', (c) => renderMonitoring(c)); route('/settings', (c) => renderSettings(c)); startRouter(content); } function onLogin(user) { currentUser = user; init(); } document.addEventListener('DOMContentLoaded', init);