@ledgerhq/coin-celo
Version:
72 lines • 2.52 kB
JavaScript
;
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