token 갱신방식을 delay 방식에서 queue 방식으로 변경
This commit is contained in:
@@ -20,14 +20,29 @@ import { getUrl, URLS } from "./apiConfig";
|
||||
import { pushPanel } from "../actions/panelActions";
|
||||
import * as Config from "../utils/Config";
|
||||
|
||||
let retryCount = 0;
|
||||
let tokenRefreshing = false;
|
||||
const axiosQueue = [];
|
||||
|
||||
export const setTokenRefreshing = (value) => {
|
||||
console.log("TAxios setTokenRefreshing ", value);
|
||||
tokenRefreshing = value;
|
||||
};
|
||||
|
||||
export const runDelayedAction = (dispatch, getState) => {
|
||||
console.log("runDelayedAction axiosQueue size", axiosQueue.length);
|
||||
while (axiosQueue.length > 0) {
|
||||
const requestConfig = axiosQueue.pop(); // queue에서 요청을 하나씩 pop
|
||||
TAxios(
|
||||
dispatch,
|
||||
getState,
|
||||
requestConfig.type,
|
||||
requestConfig.baseUrl,
|
||||
requestConfig.urlParams,
|
||||
requestConfig.params,
|
||||
requestConfig.onSuccess,
|
||||
requestConfig.onFail
|
||||
);
|
||||
}
|
||||
};
|
||||
export const TAxios = (
|
||||
dispatch,
|
||||
getState,
|
||||
@@ -39,28 +54,11 @@ export const TAxios = (
|
||||
onFail,
|
||||
noTokenRefresh = false
|
||||
) => {
|
||||
const checkAccessToken = () => {
|
||||
return new Promise((resolve) => {
|
||||
const accessToken = getState().localSettings.accessToken;
|
||||
if (noTokenRefresh || (!tokenRefreshing && accessToken)) {
|
||||
resolve(accessToken);
|
||||
retryCount = 0;
|
||||
} else {
|
||||
if (!accessToken && !tokenRefreshing) {
|
||||
dispatch(getAuthenticationCode());
|
||||
}
|
||||
retryCount++;
|
||||
if (retryCount > 5) {
|
||||
return;
|
||||
}
|
||||
|
||||
HelperMethods.wait(100).then(() => {
|
||||
resolve(checkAccessToken());
|
||||
});
|
||||
}
|
||||
});
|
||||
const pushQueue = () => {
|
||||
if (!noTokenRefresh) {
|
||||
axiosQueue.push({ type, baseUrl, urlParams, params, onSuccess, onFail });
|
||||
}
|
||||
};
|
||||
|
||||
const executeRequest = (accessToken) => {
|
||||
const httpHeader = getState().common.httpHeader;
|
||||
const { mbr_no, deviceId } = getState().common.appStatus;
|
||||
@@ -138,9 +136,7 @@ export const TAxios = (
|
||||
if (!tokenRefreshing) {
|
||||
dispatch(getReAuthenticationCode());
|
||||
}
|
||||
checkAccessToken().then((token) => {
|
||||
executeRequest(token);
|
||||
});
|
||||
pushQueue();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -152,9 +148,7 @@ export const TAxios = (
|
||||
if (!tokenRefreshing) {
|
||||
dispatch(getAuthenticationCode());
|
||||
}
|
||||
checkAccessToken().then((token) => {
|
||||
executeRequest(token);
|
||||
});
|
||||
pushQueue();
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -202,7 +196,13 @@ export const TAxios = (
|
||||
}
|
||||
};
|
||||
|
||||
checkAccessToken().then((token) => {
|
||||
executeRequest(token);
|
||||
});
|
||||
const accessToken = getState().localSettings.accessToken;
|
||||
if (noTokenRefresh || (!tokenRefreshing && accessToken)) {
|
||||
executeRequest(accessToken);
|
||||
} else {
|
||||
if (!accessToken && !tokenRefreshing) {
|
||||
dispatch(getAuthenticationCode());
|
||||
}
|
||||
pushQueue();
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user