Skip to content

Commit 92da75f

Browse files
author
Walker Leite
committed
feat(loopback): add setLoading fn
1 parent 06108f4 commit 92da75f

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

template/client/services/loopback.js

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {host, restApiRoot, port} from '~/server/config.json';
1+
import { host, restApiRoot, port } from '~/server/config.json';
22
import axios from 'axios';
33

44
const Storage = window.localStorage;
@@ -30,6 +30,15 @@ const http = axios.create({
3030
baseURL: `http://${host}:${port}${restApiRoot}`,
3131
});
3232

33+
// Current setLoading function
34+
let setLoading = () => {
35+
throw Error('setLoadingFunction not defined');
36+
};
37+
38+
http.setLoadingFunction = (fn) => {
39+
setLoading = fn;
40+
};
41+
3342
http.setToken = (token, save = true) => {
3443
http.token = token;
3544
http.defaults.headers.common.Authorization = token.id;
@@ -41,9 +50,10 @@ http.removeToken = () => {
4150
removeTokenFromLocalStorage();
4251
};
4352

44-
http.find = (endpoint, filter) => http.get(endpoint, {params: {filter}});
53+
http.find = (endpoint, filter) => http.get(endpoint, { params: { filter } });
4554

46-
const interceptErrors = (err) => {
55+
/* Response Interceptors */
56+
const interceptResErrors = (err) => {
4757
try {
4858
err = Object.assign(new Error(), err.response.data.error);
4959
} catch (e) {
@@ -52,17 +62,28 @@ const interceptErrors = (err) => {
5262
return Promise.reject(err);
5363
};
5464
const interceptResponse = (res) => {
65+
// console.log('response', res.config);
66+
setLoading(false, res.config.uid);
5567
try {
5668
return res.data;
5769
} catch (e) {
5870
return res;
5971
}
6072
};
61-
http.interceptors.response.use(interceptResponse, interceptErrors);
73+
http.interceptors.response.use(interceptResponse, interceptResErrors);
6274

6375
// Set storage Token in http if exists
6476
addTokenFromLocalStorage(http);
6577

78+
/* Request Interceptors */
79+
const interceptReqErrors = err => Promise.reject(err);
80+
const interceptRequest = (config) => {
81+
config.uid = setLoading(true);
82+
// console.log('request', config);
83+
return config;
84+
};
85+
http.interceptors.request.use(interceptRequest, interceptReqErrors);
86+
6687
export default http;
6788

6889
// Documentation: https://github.com/axios/axios

0 commit comments

Comments
 (0)