@reservoir0x/relay-kit-ui
Version:
Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.
84 lines • 2.96 kB
JavaScript
;
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