| 1 |
import axios from 'axios' |
| 2 |
|
| 3 |
export const useApiClient = () => { |
| 4 |
const apiClient = axios.create({ |
| 5 |
baseURL: window.wpIvyFormsPluginAjaxURL, |
| 6 |
}) |
| 7 |
|
| 8 |
apiClient.interceptors.request.use( |
| 9 |
(config) => { |
| 10 |
config.params = { ...config.params, wpAmeliaNonce: window.wpAmeliaNonce } |
| 11 |
|
| 12 |
return config |
| 13 |
}, |
| 14 |
(error) => { |
| 15 |
return Promise.reject(error) |
| 16 |
}, |
| 17 |
) |
| 18 |
|
| 19 |
const apiRequest = async (url, options = {}) => { |
| 20 |
try { |
| 21 |
const response = await apiClient.request({ url, ...options }) |
| 22 |
|
| 23 |
return { data: response.data, error: null, status: response.status } |
| 24 |
} catch (error) { |
| 25 |
return { data: null, error, status: error.response.status } |
| 26 |
} |
| 27 |
} |
| 28 |
|
| 29 |
return { |
| 30 |
apiRequest, |
| 31 |
} |
| 32 |
} |
| 33 |
|