Spaces:
Running
Running
refactor: Move auto-refresh token logic to a more appropriate location in useAuth hook
Browse files- src/hooks/useAuth.js +15 -15
src/hooks/useAuth.js
CHANGED
@@ -12,21 +12,6 @@ export const AuthProvider = ({ children }) => {
|
|
12 |
const [isRefreshing, setIsRefreshing] = useState(false);
|
13 |
const navigate = useNavigate();
|
14 |
|
15 |
-
// Auto-refresh token when it's about to expire
|
16 |
-
useEffect(() => {
|
17 |
-
const refreshInterval = setInterval(() => {
|
18 |
-
if (authTokens?.access) {
|
19 |
-
const { exp } = parseJwt(authTokens.access);
|
20 |
-
// Refresh token if it expires in less than 5 minutes
|
21 |
-
if (exp * 1000 - Date.now() < 300000) {
|
22 |
-
refreshToken();
|
23 |
-
}
|
24 |
-
}
|
25 |
-
}, 60000); // Check every minute
|
26 |
-
|
27 |
-
return () => clearInterval(refreshInterval);
|
28 |
-
}, [authTokens]);
|
29 |
-
|
30 |
const parseJwt = (token) => {
|
31 |
try {
|
32 |
return JSON.parse(atob(token.split('.')[1]));
|
@@ -87,6 +72,21 @@ export const AuthProvider = ({ children }) => {
|
|
87 |
}
|
88 |
}, [authTokens, isRefreshing, setAuthTokens, logout]);
|
89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
const getAccessToken = useCallback(async () => {
|
91 |
if (!authTokens?.access) return null;
|
92 |
|
|
|
12 |
const [isRefreshing, setIsRefreshing] = useState(false);
|
13 |
const navigate = useNavigate();
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
const parseJwt = (token) => {
|
16 |
try {
|
17 |
return JSON.parse(atob(token.split('.')[1]));
|
|
|
72 |
}
|
73 |
}, [authTokens, isRefreshing, setAuthTokens, logout]);
|
74 |
|
75 |
+
// Auto-refresh token when it's about to expire
|
76 |
+
useEffect(() => {
|
77 |
+
const refreshInterval = setInterval(() => {
|
78 |
+
if (authTokens?.access) {
|
79 |
+
const { exp } = parseJwt(authTokens.access);
|
80 |
+
// Refresh token if it expires in less than 5 minutes
|
81 |
+
if (exp * 1000 - Date.now() < 300000) {
|
82 |
+
refreshToken();
|
83 |
+
}
|
84 |
+
}
|
85 |
+
}, 60000); // Check every minute
|
86 |
+
|
87 |
+
return () => clearInterval(refreshInterval);
|
88 |
+
}, [authTokens, refreshToken]);
|
89 |
+
|
90 |
const getAccessToken = useCallback(async () => {
|
91 |
if (!authTokens?.access) return null;
|
92 |
|