diff --git a/packages/create-invoice-form/package.json b/packages/create-invoice-form/package.json index d2d1e90f..f84f4cb7 100644 --- a/packages/create-invoice-form/package.json +++ b/packages/create-invoice-form/package.json @@ -1,6 +1,6 @@ { "name": "@requestnetwork/create-invoice-form", - "version": "0.11.2", + "version": "0.11.3", "main": "./dist/web-component.umd.cjs", "scripts": { "dev": "vite dev", 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 b7d25443..b16b634c 100644 --- a/packages/create-invoice-form/src/lib/create-invoice-form.svelte +++ b/packages/create-invoice-form/src/lib/create-invoice-form.svelte @@ -214,16 +214,16 @@
{ validationErrors[`${type}`].email = !isEmail(email); @@ -146,6 +147,32 @@ $: if (!showPayeeAddressInput && formData.creatorId) { formData.payeeAddress = formData.creatorId; } + + $: { + // Filter settlement currencies whenever network, invoiceCurrency, or currencyManager changes + filteredSettlementCurrencies = defaultCurrencies.filter((currency) => { + if (!invoiceCurrency) { + return false; + } + + // For ISO4217 currencies (like EUR) + if (invoiceCurrency.type === Types.RequestLogic.CURRENCY.ISO4217) { + const hasValidPath = + currencyManager?.getConversionPath( + invoiceCurrency, + currency, + currency.network + )?.length > 0; + + return ( + currency.type !== Types.RequestLogic.CURRENCY.ISO4217 && hasValidPath + ); + } + + // For other currency types (like ERC20) + return invoiceCurrency.hash === currency.hash; + }); + }
@@ -388,12 +415,10 @@ selectedValue={network} options={networks .filter((networkItem) => networkItem) - .map((networkItem) => { - return { - value: networkItem, - label: networkItem[0]?.toUpperCase() + networkItem?.slice(1), - }; - })} + .map((networkItem) => ({ + value: networkItem, + label: networkItem[0]?.toUpperCase() + networkItem?.slice(1), + }))} onchange={handleNetworkChange} /> { if (!curr) return false; - return ( curr.type === Types.RequestLogic.CURRENCY.ISO4217 || (curr.network && curr.network === network) @@ -423,36 +447,10 @@ selectedValue={currency ? `${currency.symbol ?? "Unknown"} (${currency?.network ?? "Unknown"})` : undefined} - options={defaultCurrencies - ?.filter((curr) => { - if (!curr || !invoiceCurrency) return false; - - if ( - invoiceCurrency.type === Types.RequestLogic.CURRENCY.ISO4217 - ) { - return ( - (curr.type === Types.RequestLogic.CURRENCY.ERC20 || - curr.type === Types.RequestLogic.CURRENCY.ISO4217) && - curr.network === network - ); - } else if ( - invoiceCurrency.type === Types.RequestLogic.CURRENCY.ERC20 - ) { - return ( - curr.type === Types.RequestLogic.CURRENCY.ERC20 && - curr.network === invoiceCurrency.network - ); - } else { - return ( - curr.type === Types.RequestLogic.CURRENCY.ERC20 && - curr.network === invoiceCurrency.network - ); - } - }) - .map((currency) => ({ - value: currency, - label: `${currency?.symbol ?? "Unknown"} ${currency?.network ? `(${currency.network})` : ""}`, - })) ?? []} + options={filteredSettlementCurrencies.map((currency) => ({ + value: currency, + label: `${currency.symbol ?? "Unknown"} (${currency?.network ?? "Unknown"})`, + }))} onchange={handleCurrencyChange} />