import { useEffect } from 'react'; import { useAuth } from '@/hooks/useAuth'; import { useUnitPreferences } from '@/hooks/useUnitPreferences'; function isLocalStorageAvailable(): boolean { try { if (typeof window === 'undefined' || typeof localStorage === 'undefined') { return false; } const testKey = '__localStorage_test__'; localStorage.setItem(testKey, 'test'); localStorage.removeItem(testKey); return true; } catch { return false; } } export function useLocationAutoDetect() { const { user } = useAuth(); const { preferences, autoDetectPreferences, loading } = useUnitPreferences(); useEffect(() => { // Only run auto-detection after preferences have loaded if (loading) return; // Check if localStorage is available if (!isLocalStorageAvailable()) { console.warn('localStorage is not available, skipping location auto-detection'); return; } // Check if we've already attempted detection const hasAttemptedDetection = localStorage.getItem('location_detection_attempted'); // Auto-detect if we haven't attempted it yet and auto_detect is enabled if (preferences.auto_detect && !hasAttemptedDetection) { autoDetectPreferences().then(() => { if (isLocalStorageAvailable()) { localStorage.setItem('location_detection_attempted', 'true'); } }).catch((error) => { console.error('❌ Failed to auto-detect location:', error); if (isLocalStorageAvailable()) { localStorage.setItem('location_detection_attempted', 'true'); } }); } }, [user, loading, preferences.auto_detect]); }