import {ref} from "vue";

export async function request(url, options = {}) {
    const loading = ref(true)
    const isFormData = options.body instanceof FormData
    const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content')
    const data = ref(null)
    const error = ref(null)


    error.value = null
    data.value = null

    try {
        const response = await fetch(url, {
            method: options.method || "GET",
            headers: {
                'X-CSRF-TOKEN': csrfToken,
                ...(isFormData ? {} : { 'Content-Type': 'application/json' }),
                ...(options.headers || {}),
            },
            body: isFormData
                ? options.body          // ✅ FormData direkt
                : options.body
                    ? JSON.stringify(options.body)
                    : null,
        })

        if (!response.ok) throw new Error(`HTTP ${response.status}`)

        const result = await response.json()
        data.value = result
        return result
    } catch (err) {
        error.value = err
        console.error("AJAX Error:", err)
        return null
    } finally {
        loading.value = false
    }
}
