UNPKG

@ledgerhq/coin-celo

Version:
72 lines 2.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hydrate = exports.preload = exports.getPreloadStrategy = void 0; exports.getCurrentCeloPreloadData = getCurrentCeloPreloadData; exports.getCeloPreloadDataUpdates = getCeloPreloadDataUpdates; const bignumber_js_1 = require("bignumber.js"); const rxjs_1 = require("rxjs"); const logs_1 = require("@ledgerhq/logs"); const logic_1 = require("../logic"); const validators_1 = require("../network/validators"); let currentCeloPreloadedData = { validatorGroups: [], }; function fromHydrateValidator(validatorGroupRaw) { return { address: validatorGroupRaw.address.toString(), name: validatorGroupRaw.name.toString(), votes: new bignumber_js_1.BigNumber(validatorGroupRaw.votes), }; } function fromHydratePreloadData(data) { let validatorGroups = []; if (typeof data === "object" && data && "validatorGroups" in data) { if (Array.isArray(data.validatorGroups)) { validatorGroups = data.validatorGroups.map(fromHydrateValidator); } } return { validatorGroups, }; } const updates = new rxjs_1.Subject(); function getCurrentCeloPreloadData() { return currentCeloPreloadedData; } function setCeloPreloadData(data) { if (data === currentCeloPreloadedData) return; currentCeloPreloadedData = data; updates.next(data); } function getCeloPreloadDataUpdates() { return updates.asObservable(); } const getPreloadStrategy = () => ({ preloadMaxAge: logic_1.PRELOAD_MAX_AGE, }); exports.getPreloadStrategy = getPreloadStrategy; const preload = async () => { const { validatorGroups: previousValidatorGroups } = currentCeloPreloadedData; let validatorGroups = previousValidatorGroups; if (!validatorGroups || !validatorGroups.length) { (0, logs_1.log)("celo/preload", "refreshing celo validatorGroups..."); try { validatorGroups = await (0, validators_1.getValidatorGroups)(); } catch (error) { (0, logs_1.log)("celo/preload", "failed to fetch validatorGroups", { error, }); } } return { validatorGroups }; }; exports.preload = preload; const hydrate = (data) => { const hydrated = fromHydratePreloadData(data); (0, logs_1.log)("celo/preload", "hydrate " + hydrated.validatorGroups.length + " celo validatorGroups"); setCeloPreloadData(hydrated); }; exports.hydrate = hydrate; //# sourceMappingURL=preload.js.map