UNPKG

@ledgerhq/coin-multiversx

Version:
94 lines 3.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hydrate = exports.preload = exports.getPreloadStrategy = exports.getMultiversXPreloadDataUpdates = exports.setMultiversXPreloadData = exports.getCurrentMultiversXPreloadData = void 0; const rxjs_1 = require("rxjs"); const logs_1 = require("@ledgerhq/logs"); const api_1 = require("./api"); const PRELOAD_MAX_AGE = 30 * 60 * 1000; // 30 minutes let currentPreloadedData = { validators: [], }; function fromHydrateValidator(validatorRaw) { return { contract: validatorRaw.contract, owner: validatorRaw.owner, serviceFee: validatorRaw.serviceFee, maxDelegationCap: validatorRaw.maxDelegationCap, initialOwnerFunds: validatorRaw.initialOwnerFunds, totalActiveStake: validatorRaw.totalActiveStake, totalUnstaked: validatorRaw.totalUnstaked, maxDelegateAmountAllowed: validatorRaw.maxDelegateAmountAllowed, apr: validatorRaw.apr, explorerURL: validatorRaw.explorerURL, address: validatorRaw.address, aprValue: Number(validatorRaw.aprValue), automaticActivation: !!validatorRaw.automaticActivation, changeableServiceFee: !!validatorRaw.changeableServiceFee, checkCapOnRedelegate: !!validatorRaw.checkCapOnRedelegate, createdNonce: Number(validatorRaw.createdNonce), featured: !!validatorRaw.featured, numNodes: Number(validatorRaw.numNodes), numUsers: Number(validatorRaw.numUsers), ownerBelowRequiredBalanceThreshold: !!validatorRaw.ownerBelowRequiredBalanceThreshold, unBondPeriod: Number(validatorRaw.unBondPeriod), withDelegationCap: !!validatorRaw.withDelegationCap, disabled: !!validatorRaw.disabled, identity: { key: validatorRaw.identity.key, name: validatorRaw.identity.name, avatar: validatorRaw.identity.avatar, description: validatorRaw.identity.description, location: validatorRaw.identity.location === null ? null : validatorRaw.location, twitter: validatorRaw.identity.twitter, url: validatorRaw.identity.url, }, }; } function fromHydratePreloadData(data) { let validators = []; if (typeof data === "object" && data) { if (Array.isArray(data.validators)) { validators = data.validators.map(fromHydrateValidator); } } return { validators, }; } const updates = new rxjs_1.Subject(); function getCurrentMultiversXPreloadData() { return currentPreloadedData; } exports.getCurrentMultiversXPreloadData = getCurrentMultiversXPreloadData; function setMultiversXPreloadData(data) { if (data === currentPreloadedData) return; currentPreloadedData = data; updates.next(data); } exports.setMultiversXPreloadData = setMultiversXPreloadData; function getMultiversXPreloadDataUpdates() { return updates.asObservable(); } exports.getMultiversXPreloadDataUpdates = getMultiversXPreloadDataUpdates; const getPreloadStrategy = () => { return { preloadMaxAge: PRELOAD_MAX_AGE, }; }; exports.getPreloadStrategy = getPreloadStrategy; const preload = async () => { (0, logs_1.log)("multiversx/preload", "preloading multiversx data..."); const validators = (await (0, api_1.getProviders)()) || []; return { validators, }; }; exports.preload = preload; const hydrate = (data) => { const hydrated = fromHydratePreloadData(data); (0, logs_1.log)("multiversx/preload", `hydrated ${hydrated.validators.length} multiversx validators`); setMultiversXPreloadData(hydrated); }; exports.hydrate = hydrate; //# sourceMappingURL=preload.js.map