From 854d115a1de6c2fe62108e7121cc267acaa5fe59 Mon Sep 17 00:00:00 2001 From: Marcel Ebert Date: Mon, 22 Jul 2024 20:33:22 +0200 Subject: [PATCH] Add refactoring --- .../xcm/PendulumXcmRepository.ts | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src/v2/repositories/implementations/xcm/PendulumXcmRepository.ts b/src/v2/repositories/implementations/xcm/PendulumXcmRepository.ts index a87efcd0c..b1510ded5 100644 --- a/src/v2/repositories/implementations/xcm/PendulumXcmRepository.ts +++ b/src/v2/repositories/implementations/xcm/PendulumXcmRepository.ts @@ -9,12 +9,11 @@ import { XcmChain } from 'src/v2/models/XcmModels'; import { TokensAccounts } from 'src/v2/repositories/implementations/xcm/AcalaXcmRepository'; import { decodeAddress } from '@polkadot/util-crypto'; -/** - * Used to transfer assets from Pendulum - */ - -const PEN = 'Native'; -const XLM = { Stellar: 'StellarNative' }; +// Mapping object for token IDs +const TOKEN_IDS: Record = { + PEN: 'Native', + 'XLM.s': { Stellar: 'StellarNative' }, +}; export class PendulumXcmRepository extends XcmRepository { constructor() { @@ -35,14 +34,20 @@ export class PendulumXcmRepository extends XcmRepository { if (!to.parachainId) { throw `Parachain id for ${to.name} is not defined`; } - var tokenData; - if (token.originAssetId === 'PEN') { - tokenData = PEN; - } else if (token.originAssetId === 'XLM.s') { - tokenData = XLM; + + const tokenData = TOKEN_IDS[token.originAssetId]; + if (!tokenData) { + throw `Token name for ${token.originAssetId} is not defined`; } + + const version = 'V3'; + + const AccountId32 = { + id: decodeAddress(recipientAddress), + }; + const destination = { - V3: { + [version]: { parents: '1', interior: { X2: [ @@ -50,9 +55,7 @@ export class PendulumXcmRepository extends XcmRepository { Parachain: to.parachainId, }, { - AccountId32: { - id: decodeAddress(recipientAddress), - }, + AccountId32, }, ], }, @@ -84,13 +87,13 @@ export class PendulumXcmRepository extends XcmRepository { try { if (isNativeToken) { - return (await this.getNativeBalance(address, chain, endpoint)).toString(); + const nativeBalance = await this.getNativeBalance(address, chain, endpoint); + return nativeBalance.toString(); } - let currencyId; - if (token.originAssetId === 'XLM.s') { - currencyId = XLM; - } else { - console.error('Unsupported token: ', token.originAssetId); + + const currencyId = TOKEN_IDS[token.originAssetId]; + if (!currencyId) { + console.error(`Token name for ${token.originAssetId} is not defined`); return '0'; } const bal = await api.query.tokens.accounts(address, currencyId);