// login.js - VERSÃO COM A ESTRATÉGIA DE CONTORNO DE CORS (FormData)
// Aprimorado pelo Cometê para usar DataService e lidar com Primeiro Login

import { DataService } //
from './api.js'; //

document.addEventListener('DOMContentLoaded', () => { //
    const loginForm = document.getElementById('login-form'); //
    const feedbackDiv = document.getElementById('login-feedback'); //
    const loginButton = document.getElementById('login-button'); //
    const loginButtonText = document.getElementById('login-button-text'); //
    const loginSpinner = document.getElementById('login-spinner'); //

    // Verifica se já há um usuário logado na sessão
    const storedUser = sessionStorage.getItem('currentUser'); //
    if (storedUser) { //
        const currentUser = JSON.parse(storedUser); //
        // Se já está logado e ainda é o primeiro login, redireciona para a tela de alteração
        if (currentUser.isFirstLogin === true) {
            window.location.href = 'change_password.html';
        } else {
            window.location.href = 'index.html'; //
        }
        return; //
    }

    loginForm.addEventListener('submit', async (e) => { //
        e.preventDefault(); //
        feedbackDiv.classList.add('hidden'); //
        loginButton.disabled = true; //
        loginButtonText.classList.add('hidden'); //
        loginSpinner.classList.remove('hidden'); //

        const email = document.getElementById('login-email').value; //
        const password = document.getElementById('login-password').value; //

        try {
            // Usa o DataService para chamar a API de login
            const result = await DataService.loginUser(email, password); //

            if (result.status === 'success' && result.user) { //
                // Armazena as informações do usuário (incluindo role e isFirstLogin) na sessionStorage
                sessionStorage.setItem('currentUser', JSON.stringify(result.user)); //

                // Verifica a flag isFirstLogin retornada pelo backend
                if (result.user.primeiro_login == 1) { 
    window.location.href = 'change_password.html';
} else {
    window.location.href = 'index.html';
}
            } else {
                // Isso deve ser capturado pelo catch se DataService estiver lançando erro
                throw new Error(result.message || 'Credenciais inválidas.'); //
            }
        } catch (error) {
            feedbackDiv.textContent = error.message; //
            feedbackDiv.classList.remove('hidden'); //
            loginButton.disabled = false; //
            loginButtonText.classList.remove('hidden'); //
            loginSpinner.classList.add('hidden'); //
        }
    });
});