import axios, { AxiosHeaders } from 'axios'
import { apiBaseURL } from '@/shared/config'

// Глобальный application/json ломает FormData: axios сериализует его в JSON. Тип для JSON задаёт transformRequest.
export const apiClient = axios.create({
  baseURL: apiBaseURL,
})

apiClient.interceptors.request.use((config) => {
  try {
    config.headers = AxiosHeaders.from(config.headers ?? {})
    const token = localStorage.getItem('craftshop_auth_token')
    if (token) {
      config.headers.set('Authorization', `Bearer ${token}`)
    }
    // FormData: нельзя задавать Content-Type вручную (нужен boundary). Иначе сервер не видит файлы → { urls: [] }.
    if (config.data instanceof FormData) {
      config.headers.delete('Content-Type')
      config.headers.delete('content-type')
    }
    return config
  } catch {
    return config
  }
})
