// login.js - VERSÃO FINAL E CORRIGIDA
import { checkVersionUpdate } from './version-check.js';
import { DataService } from './api.js';

document.addEventListener('DOMContentLoaded', () => {
    checkVersionUpdate();
    // --- SELEÇÃO DE ELEMENTOS ---
    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');

    const togglePasswordButton = document.getElementById('toggle-password');
    const passwordInput = document.getElementById('login-password');

    if (togglePasswordButton && passwordInput) {
        togglePasswordButton.addEventListener('click', () => {
            // Verifica o tipo atual do campo de senha
            const type = passwordInput.getAttribute('type') === 'password' ? 'text' : 'password';
            passwordInput.setAttribute('type', type);

            // Troca o ícone de "olho" para "olho com risco" e vice-versa
            const icon = togglePasswordButton.querySelector('i');
            icon.classList.toggle('fa-eye');
            icon.classList.toggle('fa-eye-slash');
        });
    }

    // Função de segurança para mostrar feedback
    function showFeedback(message) {
        if (feedbackDiv) {
            feedbackDiv.textContent = message;
            feedbackDiv.classList.remove('hidden');
        }
    }

    // Função de segurança para controlar o estado de "carregando"
    function showLoading(isLoading) {
        if (loginButton) loginButton.disabled = isLoading;
        if (loginButtonText) loginButtonText.classList.toggle('hidden', isLoading);
        if (loginSpinner) loginSpinner.classList.toggle('hidden', !isLoading);
    }

    // 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, vai para a página principal
        window.location.href = 'index.html';
        return;
    }

    // Verifica se o formulário existe na página antes de adicionar o listener
    if (loginForm) {
        loginForm.addEventListener('submit', async (e) => {
            e.preventDefault();
            if (feedbackDiv) feedbackDiv.classList.add('hidden');
            showLoading(true);

            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) {
                    sessionStorage.setItem('currentUser', JSON.stringify(result.user));
                    
                    // Verifica se é o primeiro login para redirecionar corretamente
                    if (result.user.primeiro_login == 1) { 
                        window.location.href = 'change_password.html';
                    } else {
                        window.location.href = 'index.html';
                    }
                } else {
                    // Se o status não for 'success', trata como um erro
                    throw new Error(result.message || 'Credenciais inválidas.');
                }
            } catch (error) {
                showFeedback(error.message);
                showLoading(false);
            }
        });
    }
    const forgotPasswordLink = document.getElementById('forgot-password-link');

forgotPasswordLink.addEventListener('click', async (e) => {
    e.preventDefault();
    
    const email = prompt("Por favor, digite seu e-mail de cadastro:");
    if (!email) return;

    try {
        await DataService.checkUserExistsByEmail({ email });
        // CORREÇÃO: Redireciona para a nova página dedicada
        window.location.href = `recuperar.html?email=${encodeURIComponent(email)}`;
    } catch (error) {
        alert(error.message); 
    }
});
});