/** * Auth UI * * UI компонент для экрана авторизации. */ import * as authService from '../services/auth.service.js' import { showElement, hideElement, getInputValue, setInputValue, setElementText } from '../utils/dom.utils.js' /** * Показать экран авторизации */ export function showLoginScreen() { const loginScreen = document.getElementById('login-screen') const app = document.getElementById('app') if (loginScreen) { loginScreen.style.display = 'flex' } if (app) { app.style.display = 'none' } } /** * Скрыть экран авторизации и показать приложение */ export function hideLoginScreen() { const loginScreen = document.getElementById('login-screen') const app = document.getElementById('app') if (loginScreen) { loginScreen.style.display = 'none' } if (app) { app.style.display = 'block' } } /** * Обработка авторизации */ export async function handleLogin() { const loginInput = document.getElementById('login-input') const loginError = document.getElementById('login-error') const loginBtn = document.getElementById('login-submit-btn') if (!loginInput || !loginError || !loginBtn) { console.error('Login form elements not found') return } const login = getInputValue(loginInput).trim() try { // Скрыть предыдущие ошибки hideElement(loginError) // Показать состояние загрузки loginBtn.disabled = true loginBtn.textContent = 'Вход...' // Выполнить вход await authService.login(login) console.log('Login successful') // Скрыть login screen, показать приложение hideLoginScreen() setInputValue(loginInput, '') } catch (error) { console.error('Login failed:', error) setElementText(loginError, error.message || 'Ошибка авторизации') showElement(loginError) } finally { loginBtn.disabled = false loginBtn.textContent = 'Войти' } } /** * Выход из системы */ export function handleLogout() { if (confirm('Вы уверены, что хотите выйти?')) { authService.logout() } } /** * Инициализация обработчиков событий */ export function setupListeners() { const loginBtn = document.getElementById('login-submit-btn') const loginInput = document.getElementById('login-input') const logoutBtn = document.getElementById('logout-btn') if (loginBtn) { loginBtn.addEventListener('click', handleLogin) } if (loginInput) { loginInput.addEventListener('keypress', (e) => { if (e.key === 'Enter') { handleLogin() } }) } if (logoutBtn) { logoutBtn.addEventListener('click', handleLogout) } } // Export as default object export default { showLoginScreen, hideLoginScreen, handleLogin, handleLogout, setupListeners }