UNPKG

@web3auth/no-modal

Version:
67 lines (63 loc) 1.86 kB
'use strict'; 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;