Compare commits
3 Commits
850b2e6998
...
959e4dd7dd
Author | SHA1 | Date | |
---|---|---|---|
959e4dd7dd | |||
899dac5afd | |||
0cfd60dbe4 |
@ -46,13 +46,6 @@ const LoginPage = () => {
|
|||||||
console.log("Unable to proceed. Please try again.");
|
console.log("Unable to proceed. Please try again.");
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
|
|
||||||
if (err.status === 401) {
|
|
||||||
showToast(err.response.data);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
showToast("Unable to proceed. Please try again.","error");
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
|
@ -3,7 +3,6 @@ import { useNavigate } from "react-router-dom";
|
|||||||
import axiosRetry from "axios-retry";
|
import axiosRetry from "axios-retry";
|
||||||
import showToast from "../services/toastService";
|
import showToast from "../services/toastService";
|
||||||
const base_Url = process.env.VITE_BASE_URL;
|
const base_Url = process.env.VITE_BASE_URL;
|
||||||
|
|
||||||
export const axiosClient = axios.create({
|
export const axiosClient = axios.create({
|
||||||
baseURL: base_Url, // Your Web API URL
|
baseURL: base_Url, // Your Web API URL
|
||||||
withCredentials: false, // Required if the API uses cookies
|
withCredentials: false, // Required if the API uses cookies
|
||||||
@ -25,9 +24,7 @@ axiosClient.interceptors.request.use(
|
|||||||
}
|
}
|
||||||
return config;
|
return config;
|
||||||
},
|
},
|
||||||
(error) => {
|
(error) => Promise.reject(error)
|
||||||
return Promise.reject(error);
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// // Response interceptor to handle responses globally (optional)
|
// // Response interceptor to handle responses globally (optional)
|
||||||
@ -38,67 +35,65 @@ axiosClient.interceptors.response.use(
|
|||||||
// debugger;
|
// debugger;
|
||||||
const originalRequest = error.config;
|
const originalRequest = error.config;
|
||||||
|
|
||||||
if (error.code === "ERR_CONNECTION_REFUSED") {
|
if (!originalRequest) {
|
||||||
console.error("Connection refused. Please ensure the server is running.");
|
|
||||||
showToast(
|
|
||||||
"Unable to connect to the server. Please try again later.",
|
|
||||||
"error"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (error.code === "ERR_NETWORK") {
|
|
||||||
console.error(
|
|
||||||
"Unable to connect server. Please ensure the server is running."
|
|
||||||
);
|
|
||||||
showToast("Server is unreachable. Try again later.!", "error");
|
|
||||||
|
|
||||||
originalRequest._retry = false;
|
|
||||||
redirectToLogin();
|
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
} else if (error.code === "ECONNABORTED") {
|
|
||||||
console.error("Request timed out.");
|
|
||||||
showToast("The request took too long. Please try again later.", "error");
|
|
||||||
} else {
|
|
||||||
console.error("An error occurred:", error.message);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
// Prevent multiple toasts for the same request
|
||||||
error.response &&
|
if (!originalRequest._toastShown) {
|
||||||
error.response.status === 401 &&
|
originalRequest._toastShown = true;
|
||||||
!originalRequest._retry
|
|
||||||
) {
|
|
||||||
originalRequest._retry = true;
|
|
||||||
|
|
||||||
try {
|
if (error.code === "ERR_CONNECTION_REFUSED") {
|
||||||
|
console.error("Connection refused. Please ensure the server is running.");
|
||||||
|
showToast("Unable to connect to the server. Please try again later.", "error");
|
||||||
|
} else if (error.code === "ERR_NETWORK") {
|
||||||
|
console.error("Network error: Unable to reach the server.");
|
||||||
|
showToast("Server is unreachable. Try again later!", "error");
|
||||||
|
redirectToLogin();
|
||||||
|
} else if (error.code === "ECONNABORTED") {
|
||||||
|
console.error("Request timed out.");
|
||||||
|
showToast("The request took too long. Please try again later.", "error");
|
||||||
|
} else if (error.response) {
|
||||||
|
console.error("Error response:", error.response.status, error.response.data);
|
||||||
|
|
||||||
|
if (error.response.status === 401 && !originalRequest._retry) {
|
||||||
|
originalRequest._retry = true;
|
||||||
|
|
||||||
|
try {
|
||||||
// debugger;
|
// debugger;
|
||||||
// Get the refresh token from secure storage
|
// Get the refresh token from secure storage
|
||||||
const refreshToken = localStorage.getItem("refreshToken");
|
const refreshToken = localStorage.getItem("refreshToken");
|
||||||
|
|
||||||
if (!refreshToken) {
|
if (!refreshToken) {
|
||||||
// Redirect to login if refresh token is not available
|
// Redirect to login if refresh token is not available
|
||||||
redirectToLogin();
|
redirectToLogin();
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
}
|
}
|
||||||
// Make a request to refresh the access token
|
// Make a request to refresh the access token
|
||||||
const response = await axiosClient.post("/api/Auth/refresh-token", {
|
const response = await axiosClient.post("/api/Auth/refresh-token", {
|
||||||
token: localStorage.getItem("jwtToken"),
|
token: localStorage.getItem("jwtToken"),
|
||||||
refreshToken: refreshToken,
|
refreshToken,
|
||||||
});
|
});
|
||||||
|
|
||||||
const { token } = response.data.data;
|
const { token, refreshToken: newRefreshToken } = response.data.data;
|
||||||
|
localStorage.setItem("jwtToken", token);
|
||||||
|
localStorage.setItem("refreshToken", newRefreshToken);
|
||||||
|
|
||||||
// Save the new access token
|
// Retry the original request with the new token
|
||||||
localStorage.setItem("jwtToken", token);
|
originalRequest.headers["Authorization"] = `Bearer ${token}`;
|
||||||
localStorage.setItem("refreshToken", response.data.data.refreshToken);
|
|
||||||
|
|
||||||
// Update the original request with the new token
|
|
||||||
originalRequest.headers["Authorization"] = `Bearer ${token}`;
|
|
||||||
|
|
||||||
// Retry the original request
|
// Retry the original request
|
||||||
return api(originalRequest);
|
return axiosClient(originalRequest);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// Redirect to login if token refresh fails
|
// Redirect to login if token refresh fails
|
||||||
redirectToLogin();
|
redirectToLogin();
|
||||||
return Promise.reject(err);
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
showToast(error.response.data?.message || "An error occurred. Please try again.", "error");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.error("An unknown error occurred:", error.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user