diff --git a/packages/create-invoice-form/src/lib/create-invoice-form.svelte b/packages/create-invoice-form/src/lib/create-invoice-form.svelte index a9a1b456..603ff7a9 100644 --- a/packages/create-invoice-form/src/lib/create-invoice-form.svelte +++ b/packages/create-invoice-form/src/lib/create-invoice-form.svelte @@ -162,22 +162,45 @@ currency = undefined; filteredSettlementCurrencies = []; network = undefined; - networks = []; + + const availableNetworks = new Set( + currencyManager.knownCurrencies.map((currency) => currency.network) + ); if (invoiceCurrency.type === Types.RequestLogic.CURRENCY.ISO4217) { - networks = (getCurrencySupportedNetworksForConversion( - invoiceCurrency.hash, - currencyManager - ) ?? []) as string[]; + const conversionNetworks = new Set( + getCurrencySupportedNetworksForConversion( + invoiceCurrency.hash, + currencyManager + ) + ); + + networks = [...availableNetworks].filter( + (network) => + conversionNetworks.has(network) && + (config.supportedNetworks + ? config.supportedNetworks.includes(network) + : true) + ); } else { const baseSymbol = invoiceCurrency.symbol.split("-")[0]; - networks = currencyManager.knownCurrencies - .filter((currency) => { - const currencyBaseSymbol = currency.symbol.split("-")[0]; - return currencyBaseSymbol === baseSymbol; - }) - .map((currency) => currency.network); + networks = [...availableNetworks].filter((network) => { + const hasToken = currencyManager.knownCurrencies.some( + (currency) => + currency.network === network && + currency.symbol.split("-")[0] === baseSymbol + ); + + return ( + hasToken && + (config.supportedNetworks + ? config.supportedNetworks.includes(network) + : true) + ); + }); } + + networks = [...new Set(networks)]; } };