Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

tokenApiClient.js 1.2KB

123456789101112131415161718192021222324252627282930313233343536
  1. import axios from "axios";
  2. import { batchActions } from 'redux-batched-actions';
  3. import { logOut, setRefreshToken, setToken } from "../../store/actions";
  4. import store from "../../store/store";
  5. import { API_ENDPOINT } from '../endpointDef';
  6. let refreshingPromise = null
  7. export async function refreshTokens() {
  8. // console.log("RefreshTokens")
  9. if (!refreshingPromise) {
  10. refreshingPromise = new Promise(async (resolve, reject) => {
  11. // console.log("Sending the requst for new tokens")
  12. const refreshToken = store.getState().user.refreshToken
  13. const username = store.getState().user.username
  14. try {
  15. const { data } = await axios.post(`${API_ENDPOINT}api/token/refresh`, { Token: refreshToken, Username: username, });
  16. // console.log("Dispatch from refresh", data.Data.AccessToken, data.Data.RefreshToken)
  17. store.dispatch(batchActions([setToken(data.Data.AccessToken), setRefreshToken(data.Data.RefreshToken)]))
  18. resolve()
  19. }
  20. catch (e) {
  21. // console.log("Could not refresh token.")
  22. store.dispatch(logOut())
  23. reject(e)
  24. }
  25. finally {
  26. refreshingPromise = null
  27. }
  28. })
  29. }
  30. // else {
  31. // console.log("Someone is refreshing...")
  32. // }
  33. await refreshingPromise
  34. }