@ledgerhq/coin-multiversx
Version:
Ledger MultiversX Coin integration
94 lines • 3.73 kB
JavaScript
;
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