UNPKG

@web3auth/no-modal

Version:
61 lines (58 loc) 1.72 kB
import { jwtDecode } from '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(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; }; export { checkIfTokenIsExpired, clearToken, getSavedToken, saveToken, storageAvailable };