Compare commits
No commits in common. "959e4dd7dd3073d83d315a8c3ccc983f2324cc67" and "850b2e6998b3a620cf8142282ec9c00e38b97153" have entirely different histories.
959e4dd7dd
...
850b2e6998
@ -46,6 +46,13 @@ 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,6 +3,7 @@ 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
|
||||||
@ -24,7 +25,9 @@ axiosClient.interceptors.request.use(
|
|||||||
}
|
}
|
||||||
return config;
|
return config;
|
||||||
},
|
},
|
||||||
(error) => Promise.reject(error)
|
(error) => {
|
||||||
|
return Promise.reject(error);
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
// // Response interceptor to handle responses globally (optional)
|
// // Response interceptor to handle responses globally (optional)
|
||||||
@ -35,65 +38,67 @@ axiosClient.interceptors.response.use(
|
|||||||
// debugger;
|
// debugger;
|
||||||
const originalRequest = error.config;
|
const originalRequest = error.config;
|
||||||
|
|
||||||
if (!originalRequest) {
|
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"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prevent multiple toasts for the same request
|
if (
|
||||||
if (!originalRequest._toastShown) {
|
error.response &&
|
||||||
originalRequest._toastShown = true;
|
error.response.status === 401 &&
|
||||||
|
!originalRequest._retry
|
||||||
|
) {
|
||||||
|
originalRequest._retry = true;
|
||||||
|
|
||||||
if (error.code === "ERR_CONNECTION_REFUSED") {
|
try {
|
||||||
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, refreshToken: newRefreshToken } = response.data.data;
|
const { token } = response.data.data;
|
||||||
localStorage.setItem("jwtToken", token);
|
|
||||||
localStorage.setItem("refreshToken", newRefreshToken);
|
|
||||||
|
|
||||||
// Retry the original request with the new token
|
// Save the new access token
|
||||||
originalRequest.headers["Authorization"] = `Bearer ${token}`;
|
localStorage.setItem("jwtToken", 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 axiosClient(originalRequest);
|
return api(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