@web3auth/no-modal
Version:
Multi chain wallet aggregator for web3Auth
67 lines (63 loc) • 1.86 kB
JavaScript
;
var jwtDecode = require('jwt-decode');
function storageAvailable(type) {
let storageExists = false;
let storageLength = 0;
let storage;
try {
storage = window[type];
storageExists = true;
storageLength = storage.length;
const x = "__storage_test__";
storage.setItem(x, x);
storage.removeItem(x);
return true;
} catch (err) {
const error = err;
return !!(error && (
// everything except Firefox
error.code === 22 ||
// Firefox
error.code === 1014 ||
// test name field too, because code might not be present
// everything except Firefox
error.name === "QuotaExceededError" ||
// Firefox
error.name === "NS_ERROR_DOM_QUOTA_REACHED") &&
// acknowledge QuotaExceededError only if there's something already stored
storageExists && storageLength !== 0);
}
}
const checkIfTokenIsExpired = token => {
const decoded = jwtDecode.jwtDecode(token);
if (!decoded.exp) {
return true;
}
if (decoded.exp < Math.floor(Date.now() / 1000)) {
return true;
}
return false;
};
const getSavedToken = (userAddress, issuer) => {
if (storageAvailable("localStorage")) {
return localStorage.getItem(`${userAddress.toLowerCase()}_${issuer}`);
}
return null;
};
const saveToken = (userAddress, issuer, token) => {
if (storageAvailable("localStorage")) {
return localStorage.setItem(`${userAddress.toLowerCase()}_${issuer}`, token);
}
return null;
};
const clearToken = (userAddress, issuer) => {
if (storageAvailable("localStorage")) {
return localStorage.removeItem(`${userAddress.toLowerCase()}_${issuer}`);
}
return null;
};
exports.checkIfTokenIsExpired = checkIfTokenIsExpired;
exports.clearToken = clearToken;
exports.getSavedToken = getSavedToken;
exports.saveToken = saveToken;
exports.storageAvailable = storageAvailable;