UNPKG

custom-api-handler

Version:

The package uses axios library to request APIs and uses local-storage for tokens (auth & refresh).

50 lines (46 loc) 1.55 kB
import jwt_decode from "jwt-decode"; import moment from "moment"; import { authToken, refreshToken } from "./customMsgs"; interface TokenBody { exp: number; } /** * Method for auth-token expiry check * @param expireIntervalInSec | Seconds to expire the token * @returns | Boolean ? true -> if Session : false */ export const isAccessTokenExpired = (expireIntervalInSec: number = -32) => { try { let authTokenValue: any = localStorage.getItem(authToken); let tokenBody: TokenBody = jwt_decode(authTokenValue); let currentTime = moment(Date.now()); let expirationTime = moment.unix(tokenBody?.exp); let currTimeDiff = currentTime.diff(expirationTime, "second"); if (currTimeDiff > expireIntervalInSec) { return true; } return false; } catch (error) { return true; } }; /** * Method for refresh-token expiry check * @param expireIntervalInSec | Seconds to expire the token * @returns | Boolean ? true -> if Session : false */ export const isRefreshTokenExpired = (expireIntervalInSec: number = -32) => { try { let refreshTokenValue: any = localStorage.getItem(refreshToken); let tokenBody: TokenBody = jwt_decode(refreshTokenValue); let currentTime = moment(Date.now()); let expirationTime = moment.unix(tokenBody?.exp); let currTimeDiff = currentTime.diff(expirationTime, "second"); if (currTimeDiff > -expireIntervalInSec) { return true; } return false; } catch (error) { return true; } };