diff --git a/apps/web/src/store/collateral/filterCollateralTokens.test.ts b/apps/web/src/store/collateral/filterCollateralTokens.test.ts new file mode 100644 index 000000000..16d060dbd --- /dev/null +++ b/apps/web/src/store/collateral/filterCollateralTokens.test.ts @@ -0,0 +1,17 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; + +import { filterCollateralTokensByDebtLimit } from './filterCollateralTokens'; + +test('only returns collateral tokens with a zero debt limit', () => { + const collateralTokens = { + sICX: 'cx-sicx', + BTCB: 'cx-btcb', + NEW: 'cx-new', + }; + + assert.deepEqual(filterCollateralTokensByDebtLimit(collateralTokens, [0, 0, 100]), { + sICX: 'cx-sicx', + BTCB: 'cx-btcb', + }); +}); diff --git a/apps/web/src/store/collateral/filterCollateralTokens.ts b/apps/web/src/store/collateral/filterCollateralTokens.ts new file mode 100644 index 000000000..1b3b27543 --- /dev/null +++ b/apps/web/src/store/collateral/filterCollateralTokens.ts @@ -0,0 +1,15 @@ +export function filterCollateralTokensByDebtLimit( + collateralTokens: Record, + debtLimits: number[], +): Record { + return Object.keys(collateralTokens).reduce( + (supportedTokens, symbol, index) => { + if (debtLimits[index] === 0) { + supportedTokens[symbol] = collateralTokens[symbol]; + } + + return supportedTokens; + }, + {} as Record, + ); +} diff --git a/apps/web/src/store/collateral/hooks.ts b/apps/web/src/store/collateral/hooks.ts index 210c26a55..6863ab298 100644 --- a/apps/web/src/store/collateral/hooks.ts +++ b/apps/web/src/store/collateral/hooks.ts @@ -31,6 +31,7 @@ import { XChainId } from '@balancednetwork/xwagmi'; import { useXTransactionStore } from '@balancednetwork/xwagmi'; import { bnJs } from '@balancednetwork/xwagmi'; import { AppState } from '../index'; +import { filterCollateralTokensByDebtLimit } from './filterCollateralTokens'; import { Field, adjust, @@ -399,15 +400,7 @@ export function useSupportedCollateralTokens(): UseQueryResult<{ [key in string] const debtCeilings = debtCeilingsData.map(ceiling => (ceiling === null ? 1 : parseInt(formatUnits(ceiling)))); - const supportedTokens = {}; - Object.keys(data).forEach((symbol, index) => { - //temporarily allow BTCB with 0 debt ceiling - if (debtCeilings[index] > 0 || symbol === 'BTCB') { - supportedTokens[symbol] = data[symbol]; - } - }); - - return supportedTokens; + return filterCollateralTokensByDebtLimit(data, debtCeilings); }, }); } diff --git a/packages/xwagmi/src/constants/xTokens.ts b/packages/xwagmi/src/constants/xTokens.ts index 70115d59f..94e6c256b 100644 --- a/packages/xwagmi/src/constants/xTokens.ts +++ b/packages/xwagmi/src/constants/xTokens.ts @@ -169,7 +169,7 @@ export const xTokenMap: { [key in XChainId]: XToken[] } = { 56, '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', 18, - 'BTCB', + 'BTC', 'Binance-Peg BTCB Token', 'BTC1', ),