import { baseUrl, base_new_url, getToken } from './../utilFuncs/utilFunctions';
import axios from 'axios';
import { getQueryStringValue } from 'modules/query-string';

axios.interceptors.request.use(function (config) {
	config.headers.test = "I am only a header!";
	config.headers['Authorization'] = `Bearer ${getToken()}`;
	return config;
  }, null, { synchronous: true });


// const userState = JSON.parse(getCookie('persist:aweb')?.userState);

export const setHeaders = () => {
	// axios.defaults.baseURL = base_new_url()
	// const userState = getState()?.userState;
	let token = getToken();

	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['Authorization'] = token;	
	}
	// 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);
};


