import axios from 'axios'

// Совет: один раз задать базу для прослойки
//axios.defaults.baseURL = 'https://joyworkdev.ru/deal/index.php'

const isDev = import.meta.env.MODE === 'development'
const DEV_SESSION_ID = import.meta.env.VITE_DEV_SESSION_ID

//const BASE_URL = isDev ? '' : 'https://joyworkdev.ru/deal/index.php'
const BASE_URL = isDev ? '' : 'https://joywork.ru/deal/index.php'

axios.defaults.baseURL = BASE_URL
axios.defaults.withCredentials = true

export async function initAuth() {

    if (isDev) {
        console.log('[initAuth] Development mode: using mock token')

        // Создаём фейковый токен для разработки
        const mockToken = `dev_mock_token_${Date.now()}`
        sessionStorage.setItem('access_token', mockToken)
        axios.defaults.headers.common['Authorization'] = `Bearer ${mockToken}`

        // Также сохраняем sessionId для информации
        if (DEV_SESSION_ID) {
            sessionStorage.setItem('dev_session_id', DEV_SESSION_ID)
        }

        return mockToken
    }

    // 1) если токен уже сохранён — ставим заголовок и выходим
    const stored = sessionStorage.getItem('access_token')
    if (stored) {
        axios.defaults.headers.common['Authorization'] = `Bearer ${stored}`
        return stored
    }

    // 2) достаём PHPSESSID
    const sessionId = getSessionIdFromCookie()
    console.log('sessionId', sessionId)
    //const sessionId = 'bfcf0cc168ec34cf8e26950cf1038dc2';
    if (!sessionId) {
        console.warn('PHPSESSID not found in cookies')
        return null
    }

    try {
        // ВАЖНО: через прослойку вызываем как ?path=...
        const response = await axios.post('?path=auth/session/token', null, {
            headers: {
                'X-Session-ID': sessionId
            }
        })

        const token = response.data.access_token
        if (!token) throw new Error('No access_token in response')

        sessionStorage.setItem('access_token', token)
        axios.defaults.headers.common['Authorization'] = `Bearer ${token}`
        return token
    } catch (error) {
        console.error('Failed to get access token:', error.response?.data || error.message)
        return null
    }
}

function getSessionIdFromCookie() {
    const match = document.cookie.match(/(?:^|;\s*)PHPSESSID=([^;]+)/)
    return match ? decodeURIComponent(match[1]) : null
}
