const STORAGE_KEY = 'kestrel-cot-layers'

const DEFAULT_LAYERS = Object.freeze({ air: true, surface: true, ground: true })

function loadLayers() {
  if (typeof localStorage === 'undefined') return { ...DEFAULT_LAYERS }
  try {
    const raw = localStorage.getItem(STORAGE_KEY)
    if (!raw) return { ...DEFAULT_LAYERS }
    const parsed = JSON.parse(raw)
    return {
      air: parsed.air !== false,
      surface: parsed.surface !== false,
      ground: parsed.ground !== false,
    }
  }
  catch {
    return { ...DEFAULT_LAYERS }
  }
}

function saveLayers(layers) {
  if (typeof localStorage === 'undefined') return
  try {
    localStorage.setItem(STORAGE_KEY, JSON.stringify(layers))
  }
  catch { /* ignore quota */ }
}

export function useCotLayers() {
  const layers = ref(loadLayers())

  const layerQuery = computed(() => {
    const parts = []
    if (layers.value.air) parts.push('air')
    if (layers.value.surface) parts.push('surface')
    if (layers.value.ground) parts.push('ground')
    return parts.length ? parts.join(',') : 'none'
  })

  function toggleLayer(name) {
    if (!(name in DEFAULT_LAYERS)) return
    layers.value = { ...layers.value, [name]: !layers.value[name] }
    saveLayers(layers.value)
  }

  return Object.freeze({ layers, layerQuery, toggleLayer })
}
