@@ -243,13 +246,10 @@ Manual NFT Input
class="bg-neutral-background border-0 h-[56px]"
on:addressvalidation={onAddressValidation}
labelText={$t('inputs.address_input.label.contract')} />
-
- {#if !interfaceSupported}
+
- {#if !isOwnerOfAllToken && nftIdArray?.length > 0 && !validating}
-
+ {#if displayOwnershipError}
+
{/if}
diff --git a/packages/bridge-ui-v2/src/components/Bridge/NFTBridgeSteps/ReviewStep.svelte b/packages/bridge-ui-v2/src/components/Bridge/NFTBridgeSteps/ReviewStep.svelte
index 1e402ccfd55..f5c95f09ec6 100644
--- a/packages/bridge-ui-v2/src/components/Bridge/NFTBridgeSteps/ReviewStep.svelte
+++ b/packages/bridge-ui-v2/src/components/Bridge/NFTBridgeSteps/ReviewStep.svelte
@@ -12,18 +12,18 @@
import { shortenAddress } from '$libs/util/shortenAddress';
import { network } from '$stores/network';
+ export let hasEnoughEth: boolean = false;
+
let recipientComponent: Recipient;
let processingFeeComponent: ProcessingFee;
- export let hasEnoughEth: boolean = false;
const dispatch = createEventDispatcher();
- $: nftsToDisplay = $selectedNFTs ? $selectedNFTs : [];
-
enum NFTView {
CARDS,
LIST,
}
+
let nftView: NFTView = NFTView.CARDS;
const changeNFTView = () => {
@@ -38,6 +38,8 @@
dispatch('editTransactionDetails');
};
+ $: nftsToDisplay = $selectedNFTs ? $selectedNFTs : [];
+
// check if any of the selected NFTs are ERC1155 tokens
$: isERC1155 = $selectedNFTs ? $selectedNFTs.some((nft) => nft.type === 'ERC1155') : false;
diff --git a/packages/bridge-ui-v2/src/components/Faucet/Faucet.svelte b/packages/bridge-ui-v2/src/components/Faucet/Faucet.svelte
index 17f9dce6558..e928867433c 100644
--- a/packages/bridge-ui-v2/src/components/Faucet/Faucet.svelte
+++ b/packages/bridge-ui-v2/src/components/Faucet/Faucet.svelte
@@ -15,7 +15,7 @@
import { TokenDropdown } from '$components/TokenDropdown';
import { chains } from '$libs/chain';
import { InsufficientBalanceError, MintError, TokenMintedError } from '$libs/error';
- import { checkMintable, mint, testERC20Tokens, type Token } from '$libs/token';
+ import { checkMintable, mint, testERC20Tokens, testNFT, type Token } from '$libs/token';
import { account, network, pendingTransactions } from '$stores';
let minting = false;
@@ -26,6 +26,7 @@
let mintButtonEnabled = false;
let alertMessage = '';
let mintableTokens: Token[] = [];
+
const onlyMintable: boolean = true;
async function switchNetworkToL1() {
@@ -55,6 +56,7 @@
// Let's begin the minting process
minting = true;
+ mintButtonEnabled = false;
try {
const txHash = await mint(selectedToken, $network.id);
@@ -159,7 +161,10 @@
onMount(() => {
// Only show tokens in the dropdown that are mintable
- mintableTokens = testERC20Tokens.filter((token) => token.mintable);
+ const testERC20 = testERC20Tokens.filter((token) => token.mintable);
+ const testNFTs = testNFT.filter((token) => token.mintable);
+
+ mintableTokens = [...testERC20, ...testNFTs];
});
$: connected = isUserConnected($account);
diff --git a/packages/bridge-ui-v2/src/components/TokenDropdown/AddCustomERC20.svelte b/packages/bridge-ui-v2/src/components/TokenDropdown/AddCustomERC20.svelte
index 2059c8e1d36..bcc564e3cc5 100644
--- a/packages/bridge-ui-v2/src/components/TokenDropdown/AddCustomERC20.svelte
+++ b/packages/bridge-ui-v2/src/components/TokenDropdown/AddCustomERC20.svelte
@@ -102,7 +102,17 @@
if (!tokenAddress) return;
loadingTokenDetails = true;
log('Fetching token details for address "%s"…', tokenAddress);
- const type = await detectContractType(tokenAddress);
+
+ let type: TokenType;
+ try {
+ type = await detectContractType(tokenAddress);
+ } catch (error) {
+ log('Failed to detect contract type: ', error);
+ loadingTokenDetails = false;
+ state = AddressInputState.NOT_ERC20;
+ return;
+ }
+
if (type !== TokenType.ERC20) {
loadingTokenDetails = false;
state = AddressInputState.NOT_ERC20;
@@ -160,7 +170,6 @@