summaryrefslogtreecommitdiff
path: root/client/utils/use_jwt_refresh.js
blob: 11d4122a943d1da8bd4c5498bae846db1b87addc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import { useEffect, useRef } from 'react';

export const useJwtRefresh = (authToken, setAuthToken) => {
  const refreshTimer = useRef(null);
  useEffect(() => {
    clearTimeout(refreshTimer.current);
    if (authToken) {
      refreshTimer.current = setTimeout(async () => {
        const result = await fetch('/refresh_token').then((res) => res.json());
        if (result.token) {
          setAuthToken(result.token);
        } else {
          setAuthToken(null);
        }
      }, 60000 * 10); // 10 minutes
    }
    return () => clearTimeout(refreshTimer.current);
  }, [authToken]);
};