Skip to content

Commit

Permalink
#11 Set axiosReq to always refresh access token
Browse files Browse the repository at this point in the history
  • Loading branch information
SandraBergstrom committed Jun 21, 2023
1 parent 5ef8706 commit 62e0c67
Showing 1 changed file with 29 additions and 14 deletions.
43 changes: 29 additions & 14 deletions src/contexts/CurrentUserContext.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import { createContext, useContext, useEffect, useMemo, useState } from "react";
import axios from "axios";
import { axiosRes } from "../api/axiosDefaults";
import { axiosReq, axiosRes } from "../api/axiosDefaults";
import { response } from "msw";
import { useHistory } from "react-router-dom/cjs/react-router-dom.min";

export const CurrentUserContext = createContext();
export const SetCurrentUserContext = createContext();

export const useCurrentUser = () => useContext(CurrentUserContext)
export const useSetCurrentUser = () => useContext(SetCurrentUserContext)
export const useCurrentUser = () => useContext(CurrentUserContext);
export const useSetCurrentUser = () => useContext(SetCurrentUserContext);

export const CurrentUserProvider = ({ children }) => {
const [currentUser, setCurrentUser] = useState(null);
const history = useHistory()
const history = useHistory();

const handleMount = async () => {
try {
Expand All @@ -27,26 +27,41 @@ export const CurrentUserProvider = ({ children }) => {
}, []);

useMemo(() => {
axiosReq.interceptors.request.use(async (config) => {
try {
await axios.post("/dj-rest-auth/token/refresh/");
} catch (err) {
setCurrentUser((prevCurrentUser) => {
if (prevCurrentUser) {
history.push("/signin");
}
return null;
});
return config;
}
return config;
}, [history]);

axiosRes.interceptors.response.use(
(response) => response,
async (err) => {
if (err.response?.status === 401){
if (err.response?.status === 401) {
try {
await axios.post('/dj-rest-auth/token/refresh/')
await axios.post("/dj-rest-auth/token/refresh/");
} catch (err) {
setCurrentUser(prevCurrentUser => {
setCurrentUser((prevCurrentUser) => {
if (prevCurrentUser) {
history.push('/login')
history.push("/login");
}
return null
})
return null;
});
}
return axios(err.config)
return axios(err.config);
}
return Promise.reject(err)
return Promise.reject(err);
}
)
})
);
});

return (
<CurrentUserContext.Provider value={currentUser}>
Expand Down

0 comments on commit 62e0c67

Please sign in to comment.