/**
 * Utilidad para limpiar datos de cookies obsoletos en localStorage
 * Esta función debe ejecutarse después de que la migración se complete exitosamente
 */

import { getCookieConsent } from './cookies';

/**
 * Limpia las preferencias de cookies del localStorage después de migrar a cookies reales
 * Solo limpia si ya existe una cookie válida
 */
export const cleanupOldCookieData = () => {
  // Verificar si estamos en el navegador
  if (typeof window === 'undefined') {
    return false;
  }

  try {
    // Solo limpiar si tenemos una cookie válida
    const cookieConsent = getCookieConsent();
    
    if (cookieConsent) {
      // Limpiar datos obsoletos de localStorage relacionados con cookies
      const keysToClean = [
        'sempreg-cookie-consent',
        'sempreg-cookie-settings'
      ];
      
      let cleaned = false;
      keysToClean.forEach(key => {
        if (localStorage.getItem(key)) {
          localStorage.removeItem(key);
          cleaned = true;
        }
      });
      
      if (cleaned) {
        console.log('Cleaned up old cookie data from localStorage');
      }
      
      return cleaned;
    }
    
    return false;
  } catch (error) {
    console.error('Error cleaning up old cookie data:', error);
    return false;
  }
};

/**
 * Función de limpieza completa para desarrollo/testing
 * ¡CUIDADO! Esta función elimina TODAS las preferencias de cookies
 */
export const resetAllCookieData = () => {
  if (typeof window === 'undefined') {
    return;
  }

  try {
    // Limpiar localStorage
    const localStorageKeys = [
      'sempreg-cookie-consent',
      'sempreg-cookie-settings',
      'sempreg-visit-history',
      'sempreg-custom-events'
    ];
    
    localStorageKeys.forEach(key => {
      localStorage.removeItem(key);
    });
    
    // Limpiar cookies de consentimiento
    document.cookie = 'sempreg-cookie-consent=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
    
    // Recargar la página para aplicar cambios
    window.location.reload();
  } catch (error) {
    console.error('Error resetting cookie data:', error);
  }
};

/**
 * Verifica el estado actual de las cookies y localStorage para debugging
 */
// export const debugCookieState = () => {
//   if (typeof window === 'undefined') {
//     console.log('debugCookieState: Not in browser environment');
//     return;
//   }

//   console.group('Cookie Debug State');
  
//   try {
//     // Estado de cookies
//     const cookieConsent = getCookieConsent();
//     console.log('Cookie consent:', cookieConsent);
    
//     // Estado de localStorage
//     const localStorageConsent = localStorage.getItem('sempreg-cookie-consent');
//     console.log('LocalStorage consent:', localStorageConsent ? JSON.parse(localStorageConsent) : null);
    
//     // Todas las cookies del dominio
//     console.log('All cookies:', document.cookie);
    
//     // Verificar capacidades
//     console.log('Cookies enabled:', navigator.cookieEnabled);
    
//   } catch (error) {
//     console.error('Error debugging cookie state:', error);
//   }
  
//   console.groupEnd();
// };
