From f52d06ac5d15f47036755fd6b22cf7a1b75616dc Mon Sep 17 00:00:00 2001 From: isstuev Date: Mon, 28 Oct 2024 11:33:01 +0100 Subject: [PATCH] Zapper integration --- configs/app/features/multichainButton.ts | 16 ++-- configs/envs/.env.base | 2 +- configs/envs/.env.eth | 2 +- configs/envs/.env.eth_sepolia | 2 +- configs/envs/.env.gnosis | 2 +- configs/envs/.env.main | 2 +- configs/envs/.env.optimism | 2 +- configs/envs/.env.zksync | 2 +- configs/envs/.env.zora | 4 +- deploy/tools/envs-validator/schema.ts | 23 +++-- deploy/tools/envs-validator/test/.env.base | 2 +- docs/ENVS.md | 2 +- types/client/multichainProviderConfig.ts | 9 +- .../details/AddressMultichainButton.tsx | 70 +++++++++++++++ ui/address/details/AddressNetWorth.pw.tsx | 24 ++++-- ui/address/details/AddressNetWorth.tsx | 80 +++++------------- ...multichain-button-internal-dark-mode-1.png | Bin 5757 -> 0 bytes ...multichain-button-internal-dark-mode-1.png | Bin 0 -> 5285 bytes ...essNetWorth.pw.tsx_default_base-view-1.png | Bin 2724 -> 2469 bytes ...ault_with-multichain-button-external-1.png | Bin 5621 -> 0 bytes ...multichain-button-internal-dark-mode-1.png | Bin 5478 -> 0 bytes ...tichain-button-internal-small-screen-1.png | Bin 6005 -> 5412 bytes ...th-single-multichain-button-external-1.png | Bin 0 -> 5146 bytes ...multichain-button-internal-dark-mode-1.png | Bin 0 -> 5012 bytes ..._with-two-multichain-button-external-1.png | Bin 0 -> 4162 bytes 25 files changed, 151 insertions(+), 93 deletions(-) create mode 100644 ui/address/details/AddressMultichainButton.tsx delete mode 100644 ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_dark-color-mode_with-multichain-button-internal-dark-mode-1.png create mode 100644 ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_dark-color-mode_with-single-multichain-button-internal-dark-mode-1.png delete mode 100644 ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-multichain-button-external-1.png delete mode 100644 ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-multichain-button-internal-dark-mode-1.png create mode 100644 ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-single-multichain-button-external-1.png create mode 100644 ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-single-multichain-button-internal-dark-mode-1.png create mode 100644 ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-two-multichain-button-external-1.png diff --git a/configs/app/features/multichainButton.ts b/configs/app/features/multichainButton.ts index 47b1433d05..66ccc44b52 100644 --- a/configs/app/features/multichainButton.ts +++ b/configs/app/features/multichainButton.ts @@ -1,22 +1,24 @@ import type { Feature } from './types'; -import type { MultichainProviderConfig } from 'types/client/multichainProviderConfig'; +import type { MultichainProviderConfig, MultichainProviderConfigResult } from 'types/client/multichainProviderConfig'; import { getEnvValue, parseEnvJson } from '../utils'; import marketplace from './marketplace'; -const value = parseEnvJson(getEnvValue('NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG')); +const value = parseEnvJson>(getEnvValue('NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG')); const title = 'Multichain balance'; -const config: Feature<{name: string; logoUrl?: string; urlTemplate: string; dappId?: string }> = (() => { +const config: Feature<{ providers: Array }> = (() => { if (value) { return Object.freeze({ title, isEnabled: true, - name: value.name, - logoUrl: value.logo, - urlTemplate: value.url_template, - dappId: marketplace.isEnabled ? value.dapp_id : undefined, + providers: value.map((provider) => ({ + name: provider.name, + logoUrl: provider.logo, + urlTemplate: provider.url_template, + dappId: marketplace.isEnabled ? provider.dapp_id : undefined, + })), }); } diff --git a/configs/envs/.env.base b/configs/envs/.env.base index 2c9cdf6699..9003326a81 100644 --- a/configs/envs/.env.base +++ b/configs/envs/.env.base @@ -38,7 +38,7 @@ NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM=https://airtable.com/appiy5yijZpMMSKjT/shr6u NEXT_PUBLIC_MARKETPLACE_SUGGEST_IDEAS_FORM=https://airtable.com/appiy5yijZpMMSKjT/pag3t82DUCyhGRZZO/form NEXT_PUBLIC_METADATA_SERVICE_API_HOST=https://metadata.services.blockscout.com NEXT_PUBLIC_METASUITES_ENABLED=true -NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG={'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} +NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG=[{'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'}] NEXT_PUBLIC_NAME_SERVICE_API_HOST=https://bens.services.blockscout.com NEXT_PUBLIC_NAVIGATION_HIGHLIGHTED_ROUTES=['/apps'] NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS=18 diff --git a/configs/envs/.env.eth b/configs/envs/.env.eth index 0ea799c9a3..42a4639b87 100644 --- a/configs/envs/.env.eth +++ b/configs/envs/.env.eth @@ -39,7 +39,7 @@ NEXT_PUBLIC_MARKETPLACE_SUGGEST_IDEAS_FORM=https://airtable.com/appiy5yijZpMMSKj NEXT_PUBLIC_MARKETPLACE_RATING_AIRTABLE_BASE_ID=appGkvtmKI7fXE4Vs NEXT_PUBLIC_METADATA_SERVICE_API_HOST=https://metadata.services.blockscout.com NEXT_PUBLIC_METASUITES_ENABLED=true -NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG={'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} +NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG=[{'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'}, {'name': 'zerion2', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'}] NEXT_PUBLIC_GAS_REFUEL_PROVIDER_CONFIG={'name': 'Need gas?', 'dapp_id': 'smol-refuel', 'url_template': 'https://smolrefuel.com/?outboundChain={chainId}&partner=blockscout&utm_source=blockscout&utm_medium=address&disableBridges=true', 'logo': 'https://blockscout-content.s3.amazonaws.com/smolrefuel-logo-action-button.png'} NEXT_PUBLIC_NAME_SERVICE_API_HOST=https://bens.services.blockscout.com NEXT_PUBLIC_NAVIGATION_HIGHLIGHTED_ROUTES=['/apps'] diff --git a/configs/envs/.env.eth_sepolia b/configs/envs/.env.eth_sepolia index 01698d12c4..9dbc3b8d11 100644 --- a/configs/envs/.env.eth_sepolia +++ b/configs/envs/.env.eth_sepolia @@ -38,7 +38,7 @@ NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM=https://airtable.com/appiy5yijZpMMSKjT/shr6u NEXT_PUBLIC_MARKETPLACE_SUGGEST_IDEAS_FORM=https://airtable.com/appiy5yijZpMMSKjT/pag3t82DUCyhGRZZO/form NEXT_PUBLIC_METADATA_SERVICE_API_HOST=https://metadata.services.blockscout.com NEXT_PUBLIC_METASUITES_ENABLED=true -NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG={'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} +NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG=[{'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'}] NEXT_PUBLIC_NAME_SERVICE_API_HOST=https://bens.services.blockscout.com NEXT_PUBLIC_NAVIGATION_HIGHLIGHTED_ROUTES=['/apps'] NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS=18 diff --git a/configs/envs/.env.gnosis b/configs/envs/.env.gnosis index 60e7c3c161..dead77d742 100644 --- a/configs/envs/.env.gnosis +++ b/configs/envs/.env.gnosis @@ -45,7 +45,7 @@ NEXT_PUBLIC_MARKETPLACE_SUGGEST_IDEAS_FORM=https://airtable.com/appiy5yijZpMMSKj NEXT_PUBLIC_MARKETPLACE_GRAPH_LINKS_URL=https://raw.githubusercontent.com/blockscout/frontend-configs/refs/heads/marketplace-graph-test/test-configs/marketplace-graph-links.json NEXT_PUBLIC_METADATA_SERVICE_API_HOST=https://metadata.services.blockscout.com NEXT_PUBLIC_METASUITES_ENABLED=true -NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG={'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} +NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG=[{'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'}] NEXT_PUBLIC_NAME_SERVICE_API_HOST=https://bens.services.blockscout.com NEXT_PUBLIC_NAVIGATION_HIGHLIGHTED_ROUTES=['/apps'] NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS=18 diff --git a/configs/envs/.env.main b/configs/envs/.env.main index d33f7ec621..e9d31eedb2 100644 --- a/configs/envs/.env.main +++ b/configs/envs/.env.main @@ -39,7 +39,7 @@ NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM=https://airtable.com/appiy5yijZpMMSKjT/shr6u NEXT_PUBLIC_MARKETPLACE_SUGGEST_IDEAS_FORM=https://airtable.com/appiy5yijZpMMSKjT/pag3t82DUCyhGRZZO/form NEXT_PUBLIC_METADATA_SERVICE_API_HOST=https://metadata-test.k8s-dev.blockscout.com NEXT_PUBLIC_METASUITES_ENABLED=true -NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG={'name': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} +NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG=[{'name': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'}] NEXT_PUBLIC_NAME_SERVICE_API_HOST=https://bens-rs-test.k8s-dev.blockscout.com NEXT_PUBLIC_NAVIGATION_HIGHLIGHTED_ROUTES=['/blocks','/apps'] NEXT_PUBLIC_NAVIGATION_LAYOUT=horizontal diff --git a/configs/envs/.env.optimism b/configs/envs/.env.optimism index f23300e95f..45f46dc01e 100644 --- a/configs/envs/.env.optimism +++ b/configs/envs/.env.optimism @@ -39,7 +39,7 @@ NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM=https://airtable.com/appiy5yijZpMMSKjT/shr6u NEXT_PUBLIC_MARKETPLACE_SUGGEST_IDEAS_FORM=https://airtable.com/appiy5yijZpMMSKjT/pag3t82DUCyhGRZZO/form NEXT_PUBLIC_METADATA_SERVICE_API_HOST=https://metadata.services.blockscout.com NEXT_PUBLIC_METASUITES_ENABLED=true -NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG={'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} +NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG=[{'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'}] NEXT_PUBLIC_NAME_SERVICE_API_HOST=https://bens.services.blockscout.com NEXT_PUBLIC_NAVIGATION_HIGHLIGHTED_ROUTES=['/apps'] NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS=18 diff --git a/configs/envs/.env.zksync b/configs/envs/.env.zksync index 3ae765711d..0638d13b80 100644 --- a/configs/envs/.env.zksync +++ b/configs/envs/.env.zksync @@ -27,7 +27,7 @@ NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED=true NEXT_PUBLIC_LOGOUT_URL=https://zksync.us.auth0.com/v2/logout NEXT_PUBLIC_METADATA_SERVICE_API_HOST=https://metadata.services.blockscout.com NEXT_PUBLIC_METASUITES_ENABLED=true -NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG={'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} +NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG=[{'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'}] NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS=18 NEXT_PUBLIC_NETWORK_CURRENCY_NAME=ETH NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL=ETH diff --git a/configs/envs/.env.zora b/configs/envs/.env.zora index 1ad405ea6b..de5a551bd1 100644 --- a/configs/envs/.env.zora +++ b/configs/envs/.env.zora @@ -56,5 +56,5 @@ NEXT_PUBLIC_ROLLUP_TYPE=optimistic NEXT_PUBLIC_STATS_API_HOST=https://stats-l2-zora-mainnet.k8s-prod-1.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com -NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG={'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} -NEXT_PUBLIC_ADDRESS_USERNAME_TAG={'api_url_template': 'https://api.zora.co/discover/user/{address}', 'tag_link_template': 'httpszora.co/{username}', 'tag_icon': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/network-icons/zora.svg', 'tag_bg_color': 'rgba(0,0,0)', 'tag_text_color': 'rgba(255,255,255)'} \ No newline at end of file +NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG=[{'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview?utm_source=blockscout&utm_medium=address', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'}] +NEXT_PUBLIC_ADDRESS_USERNAME_TAG={'api_url_template': 'https://api.zora.co/discover/user/{address}', 'tag_link_template': 'httpszora.co/{username}', 'tag_icon': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/network-icons/zora.svg', 'tag_bg_color': 'rgba(0,0,0)', 'tag_text_color': 'rgba(255,255,255)'} diff --git a/deploy/tools/envs-validator/schema.ts b/deploy/tools/envs-validator/schema.ts index 193178a694..b3d55d788f 100644 --- a/deploy/tools/envs-validator/schema.ts +++ b/deploy/tools/envs-validator/schema.ts @@ -530,6 +530,13 @@ const deFiDropdownItemSchema: yup.ObjectSchema = yup return Boolean(value.dappId) || Boolean(value.url); }) as yup.ObjectSchema; +const multichainProviderConfigSchema: yup.ObjectSchema = yup.object({ + name: yup.string().required(), + url_template: yup.string().required(), + logo: yup.string().required(), + dapp_id: yup.string(), +}); + const schema = yup .object() .noUnknown(true, (params) => { @@ -768,18 +775,10 @@ const schema = yup NEXT_PUBLIC_HAS_USER_OPS: yup.boolean(), NEXT_PUBLIC_METASUITES_ENABLED: yup.boolean(), NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG: yup - .mixed() - .test('shape', 'Invalid schema were provided for NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG, it should have name and url template', (data) => { - const isUndefined = data === undefined; - const valueSchema = yup.object().transform(replaceQuotes).json().shape({ - name: yup.string().required(), - url_template: yup.string().required(), - logo: yup.string(), - dapp_id: yup.string(), - }); - - return isUndefined || valueSchema.isValidSync(data); - }), + .array() + .transform(replaceQuotes) + .json() + .of(multichainProviderConfigSchema), NEXT_PUBLIC_GAS_REFUEL_PROVIDER_CONFIG: yup .mixed() .test('shape', 'Invalid schema were provided for NEXT_PUBLIC_GAS_REFUEL_PROVIDER_CONFIG, it should have name and url template', (data) => { diff --git a/deploy/tools/envs-validator/test/.env.base b/deploy/tools/envs-validator/test/.env.base index f5231bdb0e..7ffdb69648 100644 --- a/deploy/tools/envs-validator/test/.env.base +++ b/deploy/tools/envs-validator/test/.env.base @@ -83,6 +83,6 @@ NEXT_PUBLIC_WEB3_DISABLE_ADD_TOKEN_TO_WALLET=false NEXT_PUBLIC_WEB3_WALLETS=['coinbase','metamask','token_pocket'] NEXT_PUBLIC_VALIDATORS_CHAIN_TYPE=stability NEXT_PUBLIC_DEFI_DROPDOWN_ITEMS=[{'text':'Swap','icon':'swap','dappId':'uniswap'},{'text':'Payment link','icon':'payment_link','url':'https://example.com'}] -NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG={'name': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} +NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG=[{'name': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'}] NEXT_PUBLIC_GAS_REFUEL_PROVIDER_CONFIG={'name': 'Need gas?', 'dapp_id': 'smol-refuel', 'url_template': 'https://smolrefuel.com/?outboundChain={chainId}&partner=blockscout&utm_source=blockscout&utm_medium=address&disableBridges=true', 'logo': 'https://blockscout-content.s3.amazonaws.com/smolrefuel-logo-action-button.png'} NEXT_PUBLIC_SAVE_ON_GAS_ENABLED=true diff --git a/docs/ENVS.md b/docs/ENVS.md index 8d1f8c7565..13ee63a039 100644 --- a/docs/ENVS.md +++ b/docs/ENVS.md @@ -746,7 +746,7 @@ If the feature is enabled, a Multichain balance button will be displayed on the | Variable | Type| Description | Compulsoriness | Default value | Example value | Version | | --- | --- | --- | --- | --- | --- | --- | -| NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG | `{ name: string; url_template: string; dapp_id?: string; logo?: string }` | Multichain portfolio application config See [below](#multichain-button-configuration-properties) | - | - | `{ name: 'zerion', url_template: 'https://app.zerion.io/{address}/overview', logo: 'https://example.com/icon.svg'` | v1.31.0+ | +| NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG | `[{ name: string; url_template: string; dapp_id?: string; logo: string }]` | Multichain portfolio application config See [below](#multichain-button-configuration-properties) | - | - | `[{ name: 'zerion', url_template: 'https://app.zerion.io/{address}/overview', logo: 'https://example.com/icon.svg'}]` | v1.31.0+ |   diff --git a/types/client/multichainProviderConfig.ts b/types/client/multichainProviderConfig.ts index fbdced386f..ec64c06be0 100644 --- a/types/client/multichainProviderConfig.ts +++ b/types/client/multichainProviderConfig.ts @@ -2,5 +2,12 @@ export type MultichainProviderConfig = { name: string; dapp_id?: string; url_template: string; - logo?: string; + logo: string; +}; + +export type MultichainProviderConfigResult = { + name: string; + logoUrl: string; + urlTemplate: string; + dappId?: string; }; diff --git a/ui/address/details/AddressMultichainButton.tsx b/ui/address/details/AddressMultichainButton.tsx new file mode 100644 index 0000000000..a2b3f91f95 --- /dev/null +++ b/ui/address/details/AddressMultichainButton.tsx @@ -0,0 +1,70 @@ +import { Image, Tooltip } from '@chakra-ui/react'; +import _capitalize from 'lodash/capitalize'; +import React from 'react'; + +import type { MultichainProviderConfigResult } from 'types/client/multichainProviderConfig'; + +import { route } from 'nextjs-routes'; + +import LinkExternal from 'ui/shared/links/LinkExternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; + +const TEMPLATE_ADDRESS = '{address}'; + +type Props = { + hasSingleProvider: boolean; + item: MultichainProviderConfigResult; + addressHash: string; + onClick?: () => void; +} + +const AddressMultichainButton = ({ item, addressHash, onClick, hasSingleProvider }: Props) => { + + const buttonIcon = {; + + const buttonContent = hasSingleProvider ? ( + <> + { buttonIcon } + { _capitalize(item.name) } + + ) : ( + { buttonIcon } + ); + + const linkProps = { + variant: hasSingleProvider ? 'subtle' as const : undefined, + display: 'flex', + alignItems: 'center', + fontSize: 'sm', + lineHeight: 5, + fontWeight: 500, + onClick, + }; + + try { + const portfolioUrlString = item.urlTemplate.replace(TEMPLATE_ADDRESS, addressHash); + const portfolioUrl = new URL(portfolioUrlString); + portfolioUrl.searchParams.append('utm_source', 'blockscout'); + portfolioUrl.searchParams.append('utm_medium', 'address'); + const dappId = item.dappId; + return typeof dappId === 'string' ? ( + + { buttonContent } + + ) : ( + + { buttonContent } + + ); + } catch (error) {} + + return null; +}; + +export default AddressMultichainButton; diff --git a/ui/address/details/AddressNetWorth.pw.tsx b/ui/address/details/AddressNetWorth.pw.tsx index 6dc5d34caf..4f5c744728 100644 --- a/ui/address/details/AddressNetWorth.pw.tsx +++ b/ui/address/details/AddressNetWorth.pw.tsx @@ -23,11 +23,11 @@ test('base view', async({ render }) => { await expect(component).toHaveScreenshot(); }); -test('with multichain button internal +@dark-mode', async({ render, mockEnvs, mockAssetResponse }) => { +test('with single multichain button internal +@dark-mode', async({ render, mockEnvs, mockAssetResponse }) => { await mockEnvs([ [ 'NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG', - `{"name": "duck", "dapp_id": "duck", "url_template": "https://duck.url/{address}", "logo": "${ ICON_URL }"}` ], + `[{"name": "duck", "dapp_id": "duck", "url_template": "https://duck.url/{address}", "logo": "${ ICON_URL }"}]` ], ]); await mockAssetResponse(ICON_URL, './playwright/mocks/image_svg.svg'); @@ -36,9 +36,23 @@ test('with multichain button internal +@dark-mode', async({ render, mockEnvs, mo await expect(component).toHaveScreenshot(); }); -test('with multichain button external', async({ render, mockEnvs, mockAssetResponse }) => { +test('with single multichain button external', async({ render, mockEnvs, mockAssetResponse }) => { await mockEnvs([ - [ 'NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG', `{"name": "duck", "url_template": "https://duck.url/{address}", "logo": "${ ICON_URL }"}` ], + [ 'NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG', `[{"name": "duck", "url_template": "https://duck.url/{address}", "logo": "${ ICON_URL }"}]` ], + ]); + await mockAssetResponse(ICON_URL, './playwright/mocks/image_svg.svg'); + + const component = await render(); + + await expect(component).toHaveScreenshot(); +}); + +test('with two multichain button external', async({ render, mockEnvs, mockAssetResponse }) => { + await mockEnvs([ + [ 'NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG', `[ + {"name": "duck", "url_template": "https://duck.url/{address}", "logo": "${ ICON_URL }"}, + {"name": "duck2", "url_template": "https://duck.url/{address}", "logo": "${ ICON_URL }"} + ]` ], ]); await mockAssetResponse(ICON_URL, './playwright/mocks/image_svg.svg'); @@ -51,7 +65,7 @@ test('with multichain button internal small screen', async({ render, mockEnvs, m await mockEnvs([ [ 'NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG', - `{"name": "duck", "dapp_id": "duck", "url_template": "https://duck.url/{address}", "logo": "${ ICON_URL }"}` ], + `[{"name": "duck", "dapp_id": "duck", "url_template": "https://duck.url/{address}", "logo": "${ ICON_URL }"}]` ], ]); await mockAssetResponse(ICON_URL, './playwright/mocks/image_svg.svg'); diff --git a/ui/address/details/AddressNetWorth.tsx b/ui/address/details/AddressNetWorth.tsx index 59fb0368cb..cfa262e96e 100644 --- a/ui/address/details/AddressNetWorth.tsx +++ b/ui/address/details/AddressNetWorth.tsx @@ -1,22 +1,16 @@ -import { Image, Skeleton, Text, Flex } from '@chakra-ui/react'; -import _capitalize from 'lodash/capitalize'; +import { Skeleton, Text, Flex } from '@chakra-ui/react'; import React from 'react'; import type { Address } from 'types/api/address'; -import { route } from 'nextjs-routes'; - import config from 'configs/app'; import getCurrencyValue from 'lib/getCurrencyValue'; import * as mixpanel from 'lib/mixpanel/index'; -import LinkExternal from 'ui/shared/links/LinkExternal'; -import LinkInternal from 'ui/shared/links/LinkInternal'; import TextSeparator from 'ui/shared/TextSeparator'; import { getTokensTotalInfo } from '../utils/tokenUtils'; import useFetchTokens from '../utils/useFetchTokens'; - -const TEMPLATE_ADDRESS = '{address}'; +import AddressMultichainButton from './AddressMultichainButton'; const multichainFeature = config.features.multichainButton; @@ -46,58 +40,30 @@ const AddressNetWorth = ({ addressData, isLoading, addressHash }: Props) => { mixpanel.logEvent(mixpanel.EventTypes.BUTTON_CLICK, { Content: 'Multichain', Source: 'address' }); }, []); - let multichainItem = null; + let multichainItems = null; if (multichainFeature.isEnabled && !addressData?.is_contract) { - const buttonContent = ( + const { providers } = multichainFeature; + const hasSingleProvider = providers.length === 1; + + multichainItems = ( <> - { multichainFeature.logoUrl && - { - } - { _capitalize(multichainFeature.name) } + + + Multichain + { providers.map((item) => ( + + )) + } + + ); - - const linkProps = { - variant: 'subtle' as const, - display: 'flex', - alignItems: 'center', - fontSize: 'sm', - lineHeight: 5, - fontWeight: 500, - onClick: onMultichainClick, - }; - - try { - const portfolioUrlString = multichainFeature.urlTemplate.replace(TEMPLATE_ADDRESS, addressHash); - const portfolioUrl = new URL(portfolioUrlString); - portfolioUrl.searchParams.append('utm_source', 'blockscout'); - portfolioUrl.searchParams.append('utm_medium', 'address'); - const dappId = multichainFeature.dappId; - multichainItem = ( - <> - - - Multichain - { typeof dappId === 'string' ? ( - - { buttonContent } - - ) : ( - - { buttonContent } - - ) } - - - ); - } catch (error) {} - } return ( @@ -105,7 +71,7 @@ const AddressNetWorth = ({ addressData, isLoading, addressHash }: Props) => { { (isError || !addressData?.exchange_rate) ? 'N/A' : `${ prefix }$${ totalUsd.toFormat(2) }` } - { multichainItem } + { multichainItems } ); }; diff --git a/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_dark-color-mode_with-multichain-button-internal-dark-mode-1.png b/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_dark-color-mode_with-multichain-button-internal-dark-mode-1.png deleted file mode 100644 index 227173d78e5ad65c59b26914e3453592e20a408f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5757 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 Ang9R* diff --git a/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_dark-color-mode_with-single-multichain-button-internal-dark-mode-1.png b/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_dark-color-mode_with-single-multichain-button-internal-dark-mode-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c30655a200adfda66979a8671d9a19f8d142f8f1 GIT binary patch literal 5285 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 literal 0 HcmV?d00001 diff --git a/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_base-view-1.png b/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_base-view-1.png index 3bd28c250c7999cd1134b1bdc5c24c4831e303c9..c9d4a1690315b7c9293a76ef458292d84a8eba2a 100644 GIT binary patch literal 2469 zcmYk82{@E%8^;~Xv1Kln+2?4%)%Nk&K++hkOjFecg3 zU`AvgMz$2G4lzbX$uh<=^G%%Z`p$E`*Yn=b`#$e|{qE=b|L^O~aB{E~6Ok9;;o%Xp zwXt&H;o*PIjgJWNa%b4N2SVK2FHtVm5T0jLMLG|Uu$Qfs<>mN?jG08IOKu>+?+@;2 zrld&b0wv)sPS)KjSJQ60&+F@SUIi%n2+n7z;LEz}Q?G>p&{QY?uIgo8Ez1)*U~j&0 zYj9=5fG^y#W>!^2;#_8!Y;iF`A>b6b169eT95BwC!~kIC?`6>~+@ zlbmT*nGw8Kwex0mp#sl1RoL?WvvOM#D%_vMGu#O@t2F)b~vp`oFQNTQRb zT3X<#;lGdvT2fldX~f&B z=I5PTV;L<`G>3TicP%kr ztyG*>sxFzEoBP(qwi8R&cI?3eWFNMrS7EEH-S{;`HY*jWFuM5o(2Ix?Ze$iTo# z98Tky-uJ1d5H5f8ohLun-_SY$5rGY_`T6-|_d4Iez&`K1s^;c6WHXZ*%2BXlB(%9V0 zVRs@E))wg2cLh@QFL0hpg@yt_Am}E0XV6k2j)`}5O_MBfh-<12E@`(wDCI~R`1Kre zbR15G5`FawG7vyWA5v6~myZ{B5rcDN1=6U4cMm~?(qAj56&4pSozu|JSpWQTvlA+? z&*WWwJ(=_N8sxDaV{s%qTl~hIVH&2WDB`rDy}f-v+3A74zP>fuaP8jra{&Rk_R>=F zoVz`D?M48o3SMhlOrRKui$CJrNehk$!pZT9j4fVf#CZ|`qI*k z-K{zTfw4N*J1NLtv%bpGGkQTLW3fhX>O*99c7K1r2=YmLd;5zQM)umU&3wNPqKSZg zyjxYBhWh#@@t=Q(!)dvVryw@Y5&DSXH;){djB5?C46J$L;gg<6006^hn#x^MQ&X>B z&s`5*LhHDV2XB;F=hVaM2L|jQeO%p#hwCDYbBa_NpC3_F91lFTOdOQmi~(`hWt7#p zwSOd&x3;#<2}%@WiV(7Lacc_~Zv?ow+`oXIX$hUaYSF%x#;>4&`F!u*>PolwKXh6h z>S?D1#&zx| z4j)%nC%$~??;kKK!_`}8XlO@AN04=P`As%4t0~6Hs_QR7iJm68zg+hZjtAE@Opway zU0eTtEbXQinp$6HYiDOr7!(rH`l_R2W(L6_BcwCbOiU7%or`}zW^*S;R|kxS!3zq| z>MNgWlh~eW(yOeS+cz^;R>Br`u~=--7;fYn!@nPfdtR$5DI}!KPD&bFR6-yCBHf=q zdwY3#B_yz@@7{5}3x>A6o0y1UuFOyhbUA0#VV;RTwZ7k@e%)s)JoW)TjHQ=?%9YYZ zg@v7)nn>}hvuI&HK0dpO$ni%Q_nOPvhVo*Gc_x)t@SN3+$&!*191a&78@v7*Wt_Ad z(UB?;ZJ{M8Br78D+x$mTVib*PSV-w2QE~!ZuVK5YbgRCo*`Rl_g!q#)GUry~6~)ud-MqRxJ5yo6?T2@D zvw1KboJ-JB3z0G3jOMJi+ z2w9FcnrI5$`p50`^h|p@ZEfwT>1ozY_AYD9m|pnb z>xhbqPESo)spN9oc%Y5Y8bR;k#fu&;^b)hU_%qlo64Te$xA2=NtRLu#M3e|hfcz=` z&0#aMkwkHEap&Az?i?NH?_XY1v;2Xzrj15X=BY)$(Hv7!DEZ*BGNqoLrRbJ*nd66` z68~#dS{)E9P_4N!L{h)tL2@TQp3ikE$lL3LwF1@?` z>BG5-QPxb{@y4!l*8@Gq6G;CNf)5n~q_{gKblZvf`G?)yCWXQO%JI-S{RQ9t*}YQW grF}m5@ZUc!Y`!+3UoF2`dhNfmJ?~)k4C0;oU)mj(e*gdg literal 2724 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 diff --git a/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-multichain-button-internal-dark-mode-1.png b/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-multichain-button-internal-dark-mode-1.png deleted file mode 100644 index 3bbd9df98c167fd77d02de89e0dfe66f6c961acd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5478 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 ONKIK=sZ7!G?f(I-G}p)g diff --git a/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-multichain-button-internal-small-screen-1.png b/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-multichain-button-internal-small-screen-1.png index d94432402cdf9eca9ffd9b2f566ff1c7476f71ba..e759555cc3751aee091e6ba7ec9e1e88d08b14ff 100644 GIT binary patch literal 5412 zcma)AWmr^ew8q0x2@wfVLU1TS1f@$r2Z!z&8bLx@K)P{2LRxBQkS>Xla^Nt4h;$4c z!oZM2r@(Oc8P0v~-~0X8dp~=xZ>{yMeAkZ9P?M)1V<00UBBD@Kc%?-|^!Hcb`31>e zz%?|BJ^{F0bJLOs6IJ#ztq~E?&MCfnspFM_oAuV$MgO_EgE*G{NPIJ`^S)oe4Ti`4 zT%eM0vXID->)4>hRPpz`J-hJu#putj3eH@A73M(O-k}8EiInpg+C6?){B!BmrOTl zfu3-4pKdj8(~?2T`fpybHl?Nly~@?toI%(hZ_UEuxXsOJ9;w|Tyf5_2^LWSI6P3fVbrcuuj+ud1^Wn^TOk!c-NOzg1WpEqsL8=#cIrzRx09&edM zyxL1HTIo#_baZg2LwIh@On!5mPAY?TTI?ESWz|~u)zsBFyf!mIx%~R|%fiAUp#P@^ z7p9_u0zO^+Wx_Ve>U4!lGC^%9W4)}N~JEQm6r^G~UV+V&z{DnJ>f{o2ecFco~ zna0|09TOd2f)VQMd7j&)==EUY8>@7;kM<;dx0paMtI67x{%8ua#p7KP5Mb}Qxw)c& zjFS2)z6CK@9ALfBzi%?q)7v)t9V~n_%FibS(L$)eDypgoU9FPOPaQ@LVeFMd}>RMZ4zop)vov8`7r((WN@NN!b zP^;uUdL=vM^JhO~fE38mOpChJM!!lOTFE43-MhEk<9o2m@BimO4owZ-+}ylD$^4z~ z@j8%N0%@CbNZ)D~m$kJuSlraqRAeMsfT((XRA@l~V1}M$l)rm3Nmt|L?`t5-i!h42 zNl8(3yoN}-q{g&KdGdRvEq-av^i)(JC>ORjQCu+jq)bPR_Rji;a~v z�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 A&Hw-a literal 6005 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 diff --git a/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-single-multichain-button-external-1.png b/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-single-multichain-button-external-1.png new file mode 100644 index 0000000000000000000000000000000000000000..82e94f53e18c93efbb93267c0977deffd99f08cb GIT binary patch literal 5146 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 kuCSynaYKA>Vy7Jaz0OAWNcV0 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 literal 0 HcmV?d00001