From ad16ed8e89b38b760faa7252b9a24e2ca90ce5f9 Mon Sep 17 00:00:00 2001 From: Korbinian Date: Tue, 24 Oct 2023 12:15:05 +0200 Subject: [PATCH] update design and some refactoring --- packages/bridge-ui-v2/README.md | 2 +- .../__mocks__/parseNFTMetadata.ts | 2 +- .../Bridge/AddressInput/AddressInput.svelte | 22 +- .../components/Bridge/AddressInput/state.ts | 10 +- .../src/components/Bridge/Amount.svelte | 3 +- .../components/Bridge/IDInput/IDInput.svelte | 40 +-- .../src/components/Bridge/NFTBridge.svelte | 68 ++-- .../Bridge/NFTBridgeSteps/ImportStep.svelte | 307 +++++++++++------- .../Bridge/NFTBridgeSteps/ReviewStep.svelte | 11 +- .../src/components/Icon/Icon.svelte | 25 +- .../src/components/NFTCard/NFTCard.svelte | 11 +- .../src/components/NFTCard/NFTCardGrid.svelte | 13 + .../src/components/NFTCard/index.ts | 1 + .../components/NFTList/NFTInfoDialog.svelte | 75 +++++ .../src/components/NFTList/NFTList.svelte | 9 +- .../src/components/NFTList/NFTListItem.svelte | 76 +++-- packages/bridge-ui-v2/src/i18n/en.json | 104 +++--- .../src/libs/bridge/checkBalanceToBridge.ts | 7 +- .../bridge-ui-v2/src/libs/bridge/fetchNFTs.ts | 19 +- .../libs/bridge/isSupportedNFTInterface.ts | 97 ++++++ .../bridge-ui-v2/src/libs/proof/Prover.ts | 2 +- .../src/libs/token/fetchNFTImageUrl.ts | 98 +++++- .../token/getTokenWithInfoFromAddress.test.ts | 10 +- .../libs/token/getTokenWithInfoFromAddress.ts | 6 +- .../src/libs/util/fetchNFTMetadata.ts | 96 ++++++ .../src/libs/util/getFileExtension.ts | 4 + 26 files changed, 798 insertions(+), 320 deletions(-) create mode 100644 packages/bridge-ui-v2/src/components/NFTCard/NFTCardGrid.svelte create mode 100644 packages/bridge-ui-v2/src/components/NFTList/NFTInfoDialog.svelte create mode 100644 packages/bridge-ui-v2/src/libs/bridge/isSupportedNFTInterface.ts create mode 100644 packages/bridge-ui-v2/src/libs/util/fetchNFTMetadata.ts create mode 100644 packages/bridge-ui-v2/src/libs/util/getFileExtension.ts diff --git a/packages/bridge-ui-v2/README.md b/packages/bridge-ui-v2/README.md index 38d5f80fc2..1b02780394 100644 --- a/packages/bridge-ui-v2/README.md +++ b/packages/bridge-ui-v2/README.md @@ -48,7 +48,7 @@ These are are the additional configuration files that have to be filled in: | **/config/configuredBridges.json** | Defines the chains that are connected via taiko bridges and lists the contract addresses | | **/config/configuredChains.json** | Defines some metadata for the chains, such as name, icons, explorer URL, etc. | | **/config/configuredRelayer.json** | If chains have a relayer, the URL and the chain IDs it covers are entered here | -| **/config/configuredCustomTokens.json** | Defines a list of tokens that should be available in the token dropdowns | +| **/config/configuredCustomTokens.json** | Defines a list of tokens that should be availabe in the token dropdowns | --- diff --git a/packages/bridge-ui-v2/__mocks__/parseNFTMetadata.ts b/packages/bridge-ui-v2/__mocks__/parseNFTMetadata.ts index 85bd5c786b..54e00a3f21 100644 --- a/packages/bridge-ui-v2/__mocks__/parseNFTMetadata.ts +++ b/packages/bridge-ui-v2/__mocks__/parseNFTMetadata.ts @@ -1,3 +1,3 @@ import { vi } from 'vitest'; -export const parseNFTMetadata = vi.fn(); +export const fetchNFTMetadata = vi.fn(); diff --git a/packages/bridge-ui-v2/src/components/Bridge/AddressInput/AddressInput.svelte b/packages/bridge-ui-v2/src/components/Bridge/AddressInput/AddressInput.svelte index 99a7b6a312..fbdcc01c54 100644 --- a/packages/bridge-ui-v2/src/components/Bridge/AddressInput/AddressInput.svelte +++ b/packages/bridge-ui-v2/src/components/Bridge/AddressInput/AddressInput.svelte @@ -14,14 +14,14 @@ export let labelText = $t('inputs.address_input.label.default'); export let isDisabled = false; export let quiet = false; - export let state: State = State.Default; + export let state: State = State.DEFAULT; export const validateAddress = () => { validateEthereumAddress(ethereumAddress); }; export const clearAddress = () => { - state = State.Default; + state = State.DEFAULT; if (input) input.value = ''; validateEthereumAddress(''); }; @@ -43,21 +43,21 @@ addr = address as string; } if (addr.length >= 2 && !addr.startsWith('0x')) { - state = State.Invalid; + state = State.INVALID; return; } if (addr.length < 42) { - state = State.TooShort; + state = State.TOO_SHORT; } else { if (isAddress(addr)) { - state = State.Valid; + state = State.VALID; } else { - state = State.Invalid; + state = State.INVALID; } dispatch('input', addr); } - dispatch('addressvalidation', { isValidEthereumAddress: state === State.Valid, addr }); + dispatch('addressvalidation', { isValidEthereumAddress: state === State.VALID, addr }); }; onMount(() => { @@ -80,7 +80,7 @@ bind:value={ethereumAddress} on:input={(e) => validateEthereumAddress(e.target)} class="w-full input-box withValdiation py-6 pr-16 px-[26px] title-subsection-bold placeholder:text-tertiary-content {$$props.class} - {state === State.Valid ? 'success' : ethereumAddress && state !== State.Validating ? 'error' : ''} + {state === State.VALID ? 'success' : ethereumAddress && state !== State.VALIDATING ? 'error' : ''} " /> @@ -406,6 +414,8 @@ {:else if scanned}
+
+