import axios from 'axios';
import { getQueryStringValue } from '@modules/query-string';



// const userState = JSON.parse(getCookie('persist:aweb')?.userState);

export const setHeaders = () => {
	// const userState = getState()?.userState;
	axios.defaults.headers.common = {
		'Content-Type': 'application/json',
		'X-Requested-With': 'XMLHttpRequest'
	};
	
	const token = document.head.querySelector('meta[name="csrf-token"]');

	if (token) {
		axios.defaults.headers.common['X-CSRF-TOKEN'] = token['content'];
	}
	// const userState = getState()?.userState;
	// const userState = getCookie('persist:root')?.userState ? JSON.parse(getCookie('persist:root')?.userState) : null;
	// if (userState?.isAuthenticated)
	// 	axios.defaults.headers.common.Authorization = `${userState?.token_type} ${userState?.access_token}`;
};

setHeaders();

interface RequestObject {
	url: string,
	options?: Object,
	data?: unknown
}



export const get = ({ url, options = {} }: RequestObject) => {
	setHeaders();
	if (getQueryStringValue('page')) url = url + '?page=' + getQueryStringValue('page');
	if (getQueryStringValue('sort')) url = url + '?sort=' + getQueryStringValue('sort');
	return axios.get(url, options);
};

export const del = ({ url, options = {} }: RequestObject) => {
	setHeaders();
	return axios.delete(url, options);
};

export const post = ({ url, data, options = {} }: RequestObject) => {
	setHeaders();
	return axios.post(url, data, options);
};

export const patch = ({ url, data, options = {} }: RequestObject) => {
	setHeaders();
	return axios.patch(url, data, options);
};


