UNPKG

test-ic-wallet-middleware-icrc

Version:
100 lines (99 loc) 4.38 kB
"use strict"; 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.GetTokenSNSCacheHandler = void 0; const common_1 = require("@ic-wallet-middleware/common"); const repositories_1 = require("../../../repositories"); const wrappers_1 = require("../../../wrappers"); const ckERC20Wrapper_1 = require("../../../wrappers/ckERC20/ckERC20Wrapper"); const manualTokenWrapper_1 = require("../../../wrappers/default/manualTokenWrapper"); const snsWrapper_1 = require("../../../wrappers/SNSs/snsWrapper"); const typedi_1 = require("typedi"); let GetTokenSNSCacheHandler = class GetTokenSNSCacheHandler extends common_1.BaseCacheDataHandler { tokenCacheRepository; identifierService; snsWrapper; ckERC20Wrapper; manualTokenWrapper; constructor(logger, tokenCacheRepository, identifierService, snsWrapper, ckERC20Wrapper, manualTokenWrapper) { super(logger); this.tokenCacheRepository = tokenCacheRepository; this.identifierService = identifierService; this.snsWrapper = snsWrapper; this.ckERC20Wrapper = ckERC20Wrapper; this.manualTokenWrapper = manualTokenWrapper; } validate(form) { return Promise.resolve(); } getLoadForceType() { return [common_1.LoadType.Full]; } async getLocalCacheData(info) { const tokens = await this.tokenCacheRepository.getTokens(); if (tokens.length > 0) { return { TokenList: tokens }; } else { return undefined; } } async getExternalData(info) { const snsTokens = await this.snsWrapper.getSNSTokens(); const ckERC20Tokens = await this.ckERC20Wrapper.getCkERC20Tokens(); const manualTokens = await this.manualTokenWrapper.getTokens(); const tokens = [...snsTokens, ...ckERC20Tokens, ...manualTokens]; const tokenApiList = []; for (const tkn of tokens) { const index = tokenApiList.findIndex(t => tkn.symbol == t.symbol); if (index < 0) { tokenApiList.push(tkn); } else { tokenApiList[index] = tkn; } } const tokenList = []; for (const tkn of tokenApiList) { const params = { agent: this.identifierService.getAgent(), ledgerAddress: tkn.ledgerAddress }; const icrcLedgerServiceWrapper = wrappers_1.IcrcLedgerServiceWrapper.create(params, this.logger); const standards = await icrcLedgerServiceWrapper.getICRCSupportedStandards(); tokenList.push({ ...tkn, supportedStandard: standards }); } return { TokenList: tokenList }; } async updateField(info, data) { await this.tokenCacheRepository.setTokens(data.TokenList); } getCacheDataError(info) { return new common_1.CacheDataError("tokens.unavailable", "Token unavailable"); } }; exports.GetTokenSNSCacheHandler = GetTokenSNSCacheHandler; exports.GetTokenSNSCacheHandler = GetTokenSNSCacheHandler = __decorate([ (0, typedi_1.Service)(), __param(0, (0, typedi_1.Inject)("ILogger")), __metadata("design:paramtypes", [Object, repositories_1.TokenLocalCache, common_1.IdentifierService, snsWrapper_1.SnsWrapper, ckERC20Wrapper_1.CkERC20Wrapper, manualTokenWrapper_1.ManualTokenWrapper]) ], GetTokenSNSCacheHandler);