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
text/typescript
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;
}
};