try to use lightweight unfetch instead of heavy axious
This commit is contained in:
+23
-36
@@ -1,7 +1,8 @@
|
||||
import 'common/promises';
|
||||
|
||||
// TODO: i think we need to use unfetch here instead of heavy axios
|
||||
import axios from 'axios';
|
||||
// import axios from 'axios';
|
||||
import fetch from 'unfetch';
|
||||
|
||||
import { BASE_URL, API_BASE } from './constants';
|
||||
import { siteId } from './settings';
|
||||
@@ -9,16 +10,16 @@ import { siteId } from './settings';
|
||||
const fetcher = {};
|
||||
const methods = ['get', 'post', 'put', 'patch', 'delete', 'head'];
|
||||
|
||||
const { CancelToken } = axios;
|
||||
let cancelHandler = [];
|
||||
// const { CancelToken } = axios;
|
||||
// let cancelHandler = [];
|
||||
|
||||
fetcher.cancel = (mask) => {
|
||||
cancelHandler.forEach(req => {
|
||||
if (req.url.includes(mask)) {
|
||||
req.executor('Operation canceled by the user.');
|
||||
}
|
||||
});
|
||||
};
|
||||
// fetcher.cancel = (mask) => {
|
||||
// cancelHandler.forEach(req => {
|
||||
// if (req.url.includes(mask)) {
|
||||
// req.executor('Operation canceled by the user.');
|
||||
// }
|
||||
// });
|
||||
// };
|
||||
|
||||
methods.forEach(method => {
|
||||
fetcher[method] = data => {
|
||||
@@ -31,40 +32,26 @@ methods.forEach(method => {
|
||||
const basename = `${BASE_URL}${overriddenApiBase}`;
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
const headers = {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
};
|
||||
|
||||
const parameters = {
|
||||
method,
|
||||
headers,
|
||||
withCredentials,
|
||||
method: method.toUpperCase(),
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
credentials: withCredentials && 'include',
|
||||
};
|
||||
|
||||
if (Object.keys(body).length) {
|
||||
parameters.data = body;
|
||||
}
|
||||
|
||||
parameters.url = `${basename}${url}`;
|
||||
if (method !== 'post') parameters.url += (parameters.url.includes('?') ? '&' : '?') + `site=${siteId}`;
|
||||
parameters.cancelToken = new CancelToken(executor => {
|
||||
cancelHandler.push({
|
||||
executor,
|
||||
url: parameters.url,
|
||||
});
|
||||
});
|
||||
let requestUrl = `${basename}${url}`;
|
||||
if (method !== 'post') requestUrl += (requestUrl.includes('?') ? '&' : '?') + `site=${siteId}`; // TODO: rewrite it
|
||||
|
||||
axios(parameters)
|
||||
.then(res => resolve(res.data))
|
||||
.catch(error => {
|
||||
if (!axios.isCancel(error)) {
|
||||
reject(error);
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
cancelHandler = cancelHandler.filter(req => req.url !== parameters.url);
|
||||
});
|
||||
fetch(requestUrl, parameters)
|
||||
.then(res => res.json())
|
||||
.then(data => resolve(data))
|
||||
.catch(error => reject(error));
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user