UNPKG

@reservoir0x/relay-kit-ui

Version:

Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.

84 lines 2.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.alreadyAcceptedToken = exports.setCacheEntry = exports.getCacheEntry = exports.setRelayUiKitData = exports.getRelayUiKitData = void 0; const cache_js_1 = require("../constants/cache.js"); function getRelayUiKitData() { if (typeof window === 'undefined') return { acceptedUnverifiedTokens: [], genericCache: {} }; let data = { acceptedUnverifiedTokens: [], genericCache: {} }; try { const localStorageData = localStorage.getItem(cache_js_1.RELAY_UI_KIT_KEY); data = localStorageData ? JSON.parse(localStorageData) : data; if (!data.genericCache) { data.genericCache = {}; } } catch (e) { console.warn('Failed to get RelayKitUIData', e); } return data; } exports.getRelayUiKitData = getRelayUiKitData; function setRelayUiKitData(newData) { if (typeof window === 'undefined') return; const currentData = getRelayUiKitData(); const updatedGenericCache = { ...(currentData.genericCache || {}), ...(newData.genericCache || {}) }; const updatedData = { ...currentData, ...newData, genericCache: updatedGenericCache }; try { if (updatedData.genericCache) { const now = Date.now(); Object.keys(updatedData.genericCache).forEach((key) => { if (updatedData.genericCache[key].expiresAt <= now) { delete updatedData.genericCache[key]; } }); } localStorage.setItem(cache_js_1.RELAY_UI_KIT_KEY, JSON.stringify(updatedData)); } catch (e) { console.warn('Failed to update RelayKitUIData', e); } } exports.setRelayUiKitData = setRelayUiKitData; function getCacheEntry(key) { const data = getRelayUiKitData(); const cache = data.genericCache?.[key]; if (cache && cache.expiresAt > Date.now()) { return cache.value; } else if (cache) { const currentCache = data.genericCache || {}; delete currentCache[key]; setRelayUiKitData({ genericCache: currentCache }); } return null; } exports.getCacheEntry = getCacheEntry; function setCacheEntry(key, value, ttlMinutes = cache_js_1.DEFAULT_CACHE_TTL_MINUTES) { const data = getRelayUiKitData(); const newCache = data.genericCache || {}; newCache[key] = { value: value.toString(), expiresAt: Date.now() + ttlMinutes * 60 * 1000 }; setRelayUiKitData({ genericCache: newCache }); } exports.setCacheEntry = setCacheEntry; const alreadyAcceptedToken = (token) => { const tokenKey = `${token.chainId}:${token.address}`; const relayUiKitData = getRelayUiKitData(); return relayUiKitData.acceptedUnverifiedTokens?.includes(tokenKey) ?? false; }; exports.alreadyAcceptedToken = alreadyAcceptedToken; //# sourceMappingURL=localStorage.js.map