| 123456789101112131415161718192021222324252627282930313233343536 |
- import axios from "axios";
- import { batchActions } from 'redux-batched-actions';
- import { logOut, setRefreshToken, setToken } from "../../store/actions";
- import store from "../../store/store";
- import { API_ENDPOINT } from '../endpointDef';
-
- let refreshingPromise = null
-
- export async function refreshTokens() {
- // console.log("RefreshTokens")
- if (!refreshingPromise) {
- refreshingPromise = new Promise(async (resolve, reject) => {
- // console.log("Sending the requst for new tokens")
- const refreshToken = store.getState().user.refreshToken
- const username = store.getState().user.username
- try {
- const { data } = await axios.post(`${API_ENDPOINT}api/token/refresh`, { Token: refreshToken, Username: username, });
- // console.log("Dispatch from refresh", data.Data.AccessToken, data.Data.RefreshToken)
- store.dispatch(batchActions([setToken(data.Data.AccessToken), setRefreshToken(data.Data.RefreshToken)]))
- resolve()
- }
- catch (e) {
- // console.log("Could not refresh token.")
- store.dispatch(logOut())
- reject(e)
- }
- finally {
- refreshingPromise = null
- }
- })
- }
- // else {
- // console.log("Someone is refreshing...")
- // }
- await refreshingPromise
- }
|