/**
 * Gestionnaire d'état pour le localStorage
 * Persiste les données du formulaire de contact
 */

const AppState = {
    STORAGE_KEY: 'portfolio_contact_form',

    // Champs à ne jamais stocker (sécurité)
    EXCLUDED_FIELDS: ['csrf_token', 'password', 'recaptcha_token'],

    /**
     * Vérifie si localStorage est disponible
     */
    isStorageAvailable() {
        try {
            const test = '__storage_test__';
            localStorage.setItem(test, test);
            localStorage.removeItem(test);
            return true;
        } catch (e) {
            return false;
        }
    },

    /**
     * Sauvegarde les données du formulaire
     * @param {Object} data - Données du formulaire
     */
    saveFormData(data) {
        if (!this.isStorageAvailable()) return;

        try {
            // Filtrer les champs exclus
            const filteredData = {};
            Object.keys(data).forEach(key => {
                if (!this.EXCLUDED_FIELDS.includes(key)) {
                    filteredData[key] = data[key];
                }
            });

            localStorage.setItem(this.STORAGE_KEY, JSON.stringify(filteredData));
        } catch (e) {
            console.warn('Impossible de sauvegarder dans localStorage:', e);
        }
    },

    /**
     * Charge les données sauvegardées
     * @returns {Object|null} Données ou null si absentes
     */
    getFormData() {
        if (!this.isStorageAvailable()) return null;

        try {
            const data = localStorage.getItem(this.STORAGE_KEY);
            return data ? JSON.parse(data) : null;
        } catch (e) {
            console.warn('Impossible de charger depuis localStorage:', e);
            return null;
        }
    },

    /**
     * Efface les données sauvegardées
     */
    clearFormData() {
        if (!this.isStorageAvailable()) return;

        try {
            localStorage.removeItem(this.STORAGE_KEY);
        } catch (e) {
            // Silencieux
        }
    }
};
