test-ic-wallet-middleware-icrc
Version:
Ic middleware wallet ICRC protocol
89 lines (88 loc) • 4.19 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GetTokenMarketCacheHandler = void 0;
const agent_1 = require("@dfinity/agent");
const common_1 = require("@ic-wallet-middleware/common");
const candid_did_1 = require("../../../../candid/neutrinite/candid.did");
const cacheErrorMessages_1 = require("../../../../errors/cacheErrorMessages");
const tokenMarketLocalCache_1 = require("../../../../repositories/cache/tokenMarketLocalCache/tokenMarketLocalCache");
const types_1 = require("../../../../types");
const typedi_1 = require("typedi");
const marketCanister = "u45jl-liaaa-aaaam-abppa-cai";
let GetTokenMarketCacheHandler = class GetTokenMarketCacheHandler extends common_1.BaseCacheDataHandler {
configuration;
identifierService;
tokenMarketCacheRepository;
constructor(logger, configuration, identifierService, tokenMarketCacheRepository) {
super(logger);
this.configuration = configuration;
this.identifierService = identifierService;
this.tokenMarketCacheRepository = tokenMarketCacheRepository;
}
getCacheDataError(info) {
return new common_1.CacheDataError(cacheErrorMessages_1.IcrcCacheTransactionFeeErrorKey, cacheErrorMessages_1.IcrcCacheTransactionFeeErrorMessage);
}
getLoadForceType() {
return [common_1.LoadType.Full];
}
validate(form) {
return Promise.resolve();
}
async getExternalData(info) {
let tokenMarkets = [];
const marketActor = agent_1.Actor.createActor(candid_did_1.idlFactory, {
agent: this.identifierService.getAgent(),
canisterId: this.configuration.tokenMarketCanister || marketCanister,
});
const res = await marketActor.get_latest_wallet_tokens();
tokenMarkets = this.extendedTokenToMarketInfo(res.latest);
return {
markets: tokenMarkets
};
}
extendedTokenToMarketInfo(extendedTokens) {
return extendedTokens.map((token, k) => {
let price = 0;
for (let index = 0; index < token.rates.length; index++) {
const rate = token.rates[index];
if (rate.to_token === BigInt(0)) {
price = rate.rate;
}
}
return {
name: token.config.name,
symbol: token.config.symbol,
price: price,
};
});
}
updateField(info, data) {
this.tokenMarketCacheRepository.setTokenMarkets(data.markets);
}
getLocalCacheData(info) {
const tokenMarkets = this.tokenMarketCacheRepository.getTokenMarkets();
const result = tokenMarkets ? { markets: tokenMarkets } : undefined;
return Promise.resolve(result);
}
};
exports.GetTokenMarketCacheHandler = GetTokenMarketCacheHandler;
exports.GetTokenMarketCacheHandler = GetTokenMarketCacheHandler = __decorate([
(0, typedi_1.Service)(),
__param(0, (0, typedi_1.Inject)("ILogger")),
__param(1, (0, typedi_1.Inject)("AssetManagerConfiguration")),
__metadata("design:paramtypes", [Object, types_1.AssetManagerConfiguration,
common_1.IdentifierService,
tokenMarketLocalCache_1.TokenMarketLocalCache])
], GetTokenMarketCacheHandler);