UNPKG

@radixdlt/atom-transaction-mapping

Version:
55 lines 2.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tokenBalancesPerAccountReducer = exports.emptyTokenBalancesPerAccount = exports.tokenBalancesPerAccount = void 0; const atom_1 = require("@radixdlt/atom"); const util_1 = require("@radixdlt/util"); const neverthrow_1 = require("neverthrow"); const particleReducer_1 = require("./particleReducer"); const tokenBalancesForOneAccountReducer_1 = require("./tokenBalancesForOneAccountReducer"); const _types_1 = require("./_types"); const tokenBalancesPerAccount = (balances) => ({ stateType: _types_1.ApplicationStateType.TOKEN_BALANCES_PER_ACCOUNT, balances: balances, size: balances.size, balancesFor: (owner) => { var _a; return (_a = balances.get(owner)) !== null && _a !== void 0 ? _a : tokenBalancesForOneAccountReducer_1.emptyTokenBalancesForOneAccount(owner); }, }); exports.tokenBalancesPerAccount = tokenBalancesPerAccount; const tokenBalancesPerAccountFromParticle = (particle) => { const tokenBalancesForOneAccount_ = tokenBalancesForOneAccountReducer_1.tokenBalancesForOneAccountFromParticle(particle); return exports.tokenBalancesPerAccount(new Map([[particle.address, tokenBalancesForOneAccount_]])); }; const emptyTokenBalancesPerAccount = () => exports.tokenBalancesPerAccount(new Map()); exports.emptyTokenBalancesPerAccount = emptyTokenBalancesPerAccount; const tokenBalancesPerAccountReducer = () => { const combine = (input) => { const currentBalancesMap = input.current.balances; const newBalancesMap = input.newState.balances; if (util_1.mapEquals(currentBalancesMap, newBalancesMap)) return neverthrow_1.ok(input.current); return tokenBalancesForOneAccountReducer_1.mergeMaps({ first: currentBalancesMap, second: newBalancesMap, onDuplicates: (a, b, _) => tokenBalancesForOneAccountReducer_1.tokenBalancesForOneAccountReducer(a.owner).combine({ current: a, newState: b, }), }).map((balances) => exports.tokenBalancesPerAccount(balances)); }; return particleReducer_1.makeParticleReducer({ applicationStateType: _types_1.ApplicationStateType.TOKEN_BALANCES_PER_ACCOUNT, initialState: exports.emptyTokenBalancesPerAccount(), reduce: (input) => { const particle = input.upParticle.particle; if (!atom_1.isTransferrableTokensParticle(particle)) return neverthrow_1.ok(input.state); const tokenBalancesPerAccount_ = tokenBalancesPerAccountFromParticle(particle); return combine({ current: input.state, newState: tokenBalancesPerAccount_, }); }, combine: combine, }); }; exports.tokenBalancesPerAccountReducer = tokenBalancesPerAccountReducer; //# sourceMappingURL=tokenBalancesPerAccountReducer.js.map