/**
 * 인증 관리
 */

let currentUser = null;

// 페이지 로드 시 인증 상태 확인
document.addEventListener('DOMContentLoaded', () => {
    checkAuthStatus();
    setupLoginForm();
});

// 인증 상태 확인
function checkAuthStatus() {
    const token = localStorage.getItem('authToken');
    const userData = localStorage.getItem('currentUser');
    
    if (token && userData) {
        try {
            currentUser = JSON.parse(userData);
            showMainApp();
        } catch (error) {
            console.error('사용자 데이터 파싱 실패:', error);
            logout();
        }
    } else {
        showLoginScreen();
    }
}

// 로그인 폼 설정
function setupLoginForm() {
    const loginForm = document.getElementById('loginForm');
    if (loginForm) {
        loginForm.addEventListener('submit', handleLogin);
    }
}

// 로그인 처리
async function handleLogin(event) {
    event.preventDefault();
    
    const username = document.getElementById('username').value;
    const password = document.getElementById('password').value;
    
    if (!username || !password) {
        alert('사용자명과 비밀번호를 입력해주세요.');
        return;
    }
    
    try {
        showLoading(true);
        
        // 임시 로그인 (백엔드 구현 전까지)
        if (username === 'user1' && password === 'password123') {
            const mockUser = {
                id: 1,
                username: 'user1',
                email: 'user1@todo-project.local',
                full_name: '사용자1'
            };
            
            currentUser = mockUser;
            localStorage.setItem('authToken', 'mock-token-' + Date.now());
            localStorage.setItem('currentUser', JSON.stringify(mockUser));
            
            showMainApp();
        } else {
            throw new Error('잘못된 사용자명 또는 비밀번호입니다.');
        }
        
        // 실제 API 호출 (백엔드 구현 후 사용)
        /*
        const response = await AuthAPI.login(username, password);
        currentUser = response.user;
        showMainApp();
        */
        
    } catch (error) {
        console.error('로그인 실패:', error);
        alert(error.message || '로그인에 실패했습니다.');
    } finally {
        showLoading(false);
    }
}

// 로그아웃
function logout() {
    currentUser = null;
    localStorage.removeItem('authToken');
    localStorage.removeItem('currentUser');
    showLoginScreen();
}

// 로그인 화면 표시
function showLoginScreen() {
    document.getElementById('loginScreen').classList.remove('hidden');
    document.getElementById('mainApp').classList.add('hidden');
    
    // 폼 초기화
    const loginForm = document.getElementById('loginForm');
    if (loginForm) {
        loginForm.reset();
    }
}

// 메인 앱 표시
function showMainApp() {
    document.getElementById('loginScreen').classList.add('hidden');
    document.getElementById('mainApp').classList.remove('hidden');
    
    // 사용자 정보 표시
    const currentUserElement = document.getElementById('currentUser');
    if (currentUserElement && currentUser) {
        currentUserElement.textContent = currentUser.full_name || currentUser.username;
    }
    
    // Todo 목록 로드
    if (typeof loadTodos === 'function') {
        loadTodos();
    }
}

// 로딩 상태 표시
function showLoading(show) {
    const loadingOverlay = document.getElementById('loadingOverlay');
    if (loadingOverlay) {
        if (show) {
            loadingOverlay.classList.remove('hidden');
        } else {
            loadingOverlay.classList.add('hidden');
        }
    }
}

// 전역으로 사용 가능하도록 export
window.currentUser = currentUser;
window.logout = logout;
window.showLoading = showLoading;


