From 70ddce7abf826901fd2279a33170970268509c28 Mon Sep 17 00:00:00 2001 From: isstuev Date: Tue, 14 May 2024 16:36:45 +0200 Subject: [PATCH 1/5] Multi chain balance button --- configs/app/features/index.ts | 1 + configs/app/features/multichainButton.ts | 47 +++++++++ configs/envs/.env.eth | 1 + deploy/tools/envs-validator/schema.ts | 6 ++ docs/ENVS.md | 21 ++++ lib/mixpanel/utils.ts | 2 +- mocks/address/address.ts | 2 +- types/client/multichainProviderConfig.ts | 5 + ui/address/AddressCsvExportLink.tsx | 2 +- ui/address/AddressDetails.tsx | 12 +++ ui/address/SolidityscanReport.tsx | 2 +- ...dressDetails.pw.tsx_default_contract-1.png | Bin 39014 -> 39152 bytes ...tails.pw.tsx_default_mobile-contract-1.png | Bin 34971 -> 35039 bytes ...ails.pw.tsx_default_mobile-validator-1.png | Bin 27245 -> 27311 bytes ...ressDetails.pw.tsx_default_validator-1.png | Bin 31040 -> 31200 bytes .../AddressAccountHistoryListItem.tsx | 2 +- .../AddressAccountHistoryTableItem.tsx | 2 +- .../form/ContractMethodResultWalletClient.tsx | 2 +- ui/address/contract/ContractCode.tsx | 4 +- ui/address/contract/ContractCodeIdes.tsx | 2 +- .../contract/ContractSecurityAudits.tsx | 2 +- ui/address/contract/ContractSourceCode.tsx | 2 +- ui/address/details/AddressBalance.tsx | 2 +- ui/address/details/AddressCounterItem.tsx | 2 +- ui/address/details/AddressNetWorth.pw.tsx | 58 ++++++++++ ui/address/details/AddressNetWorth.tsx | 99 ++++++++++++++++++ ...multichain-button-internal-dark-mode-1.png | Bin 0 -> 5902 bytes ...essNetWorth.pw.tsx_default_base-view-1.png | Bin 0 -> 2803 bytes ...ault_with-multichain-button-external-1.png | Bin 0 -> 5860 bytes ...multichain-button-internal-dark-mode-1.png | Bin 0 -> 5716 bytes ui/address/ensDomains/AddressEnsDomains.tsx | 2 +- ui/address/tokenSelect/TokenSelectItem.tsx | 2 +- ui/address/tokens/AddressCollections.tsx | 2 +- ui/address/utils/useFetchTokens.ts | 11 +- .../steps/AddressVerificationStepAddress.tsx | 2 +- ui/block/BlockDetails.tsx | 2 +- ui/blocks/BlocksListItem.tsx | 2 +- ui/blocks/BlocksTableItem.tsx | 2 +- ui/gasTracker/GasTrackerChart.tsx | 2 +- ui/home/LatestBlocks.tsx | 2 +- ui/home/LatestDeposits.tsx | 2 +- ui/home/LatestTxs.tsx | 2 +- ui/home/LatestWatchlistTxs.tsx | 2 +- ui/home/LatestZkEvmL2Batches.tsx | 2 +- ui/home/LatestZkevmL2BatchItem.tsx | 2 +- ui/marketplace/ContractSecurityReport.tsx | 2 +- ui/marketplace/EmptySearchResult.tsx | 2 +- ui/marketplace/MarketplaceAppTopBar.tsx | 4 +- ui/nameDomain/NameDomainDetails.tsx | 2 +- ui/pages/Marketplace.tsx | 2 +- ui/pages/NameDomain.tsx | 2 +- ui/pages/TokenInstance.tsx | 2 +- ui/searchResults/SearchResultListItem.tsx | 4 +- ui/searchResults/SearchResultTableItem.tsx | 4 +- ui/shared/AppActionButton/AppActionButton.tsx | 2 +- ui/shared/EntityTags/EntityTagLink.tsx | 4 +- ui/shared/EntityTags/EntityTagPopover.tsx | 2 +- ui/shared/LinkInternal.tsx | 24 ----- ui/shared/NetworkExplorers.tsx | 2 +- ui/shared/Page/PageTitle.tsx | 2 +- ui/shared/entities/base/components.tsx | 4 +- ui/shared/gas/GasInfoTooltip.tsx | 2 +- ui/shared/{ => links}/LinkExternal.tsx | 37 ++----- ui/shared/links/LinkInternal.tsx | 34 ++++++ ui/shared/links/useLinkStyles.ts | 24 +++++ ui/snippets/searchBar/SearchBar.tsx | 2 +- ui/token/TokenInventoryItem.tsx | 2 +- ui/token/TokenVerifiedInfo.tsx | 2 +- .../details/TokenInstanceMetadataInfo.tsx | 2 +- .../details/TokenInstanceTransfersCount.tsx | 2 +- .../metadata/MetadataItemPrimitive.tsx | 2 +- ui/tx/details/TxDetailsTokenTransfers.tsx | 2 +- .../OptimisticL2TxnBatchesListItem.tsx | 2 +- .../OptimisticL2TxnBatchesTableItem.tsx | 2 +- .../zkEvmL2/ZkEvmL2TxnBatchDetails.tsx | 2 +- .../zkEvmL2/ZkEvmTxnBatchesListItem.tsx | 2 +- .../zkEvmL2/ZkEvmTxnBatchesTableItem.tsx | 2 +- .../zkSyncL2/ZkSyncL2TxnBatchDetails.tsx | 2 +- .../zkSyncL2/ZkSyncTxnBatchesListItem.tsx | 2 +- .../zkSyncL2/ZkSyncTxnBatchesTableItem.tsx | 2 +- ui/txs/TxAdditionalInfoContent.tsx | 2 +- .../OptimisticL2WithdrawalsListItem.tsx | 2 +- .../OptimisticL2WithdrawalsTableItem.tsx | 2 +- 83 files changed, 392 insertions(+), 122 deletions(-) create mode 100644 configs/app/features/multichainButton.ts create mode 100644 types/client/multichainProviderConfig.ts create mode 100644 ui/address/details/AddressNetWorth.pw.tsx create mode 100644 ui/address/details/AddressNetWorth.tsx create 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_default_base-view-1.png create mode 100644 ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-multichain-button-external-1.png create mode 100644 ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-multichain-button-internal-dark-mode-1.png delete mode 100644 ui/shared/LinkInternal.tsx rename ui/shared/{ => links}/LinkExternal.tsx (63%) create mode 100644 ui/shared/links/LinkInternal.tsx create mode 100644 ui/shared/links/useLinkStyles.ts diff --git a/configs/app/features/index.ts b/configs/app/features/index.ts index 3272c26741..91bcfdf577 100644 --- a/configs/app/features/index.ts +++ b/configs/app/features/index.ts @@ -15,6 +15,7 @@ export { default as growthBook } from './growthBook'; export { default as marketplace } from './marketplace'; export { default as metasuites } from './metasuites'; export { default as mixpanel } from './mixpanel'; +export { default as multichainButton } from './multichainButton'; export { default as nameService } from './nameService'; export { default as restApiDocs } from './restApiDocs'; export { default as rollup } from './rollup'; diff --git a/configs/app/features/multichainButton.ts b/configs/app/features/multichainButton.ts new file mode 100644 index 0000000000..8ebc1d53dc --- /dev/null +++ b/configs/app/features/multichainButton.ts @@ -0,0 +1,47 @@ +import type { Feature } from './types'; +import type { MultichainProviderConfig } from 'types/client/multichainProviderConfig'; + +import { getEnvValue, parseEnvJson } from '../utils'; +import marketplace from './marketplace'; + +const value = parseEnvJson(getEnvValue('NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG')); + +const title = 'Multichain button'; + +function isValidUrl(string: string) { + try { + new URL(string); + return true; + } catch (error) { + return false; + } +} + +const config: Feature<{name: string; logoUrl?: string } & ({ dappId: string } | { url: string })> = (() => { + if (value) { + const enabledOptions = { + title, + isEnabled: true as const, + name: value.name, + logoUrl: value.logo, + }; + if (isValidUrl(value.url)) { + return Object.freeze({ + ...enabledOptions, + url: value.url, + }); + } else if (marketplace.isEnabled) { + return Object.freeze({ + ...enabledOptions, + dappId: value.url, + }); + } + } + + return Object.freeze({ + title, + isEnabled: false, + }); +})(); + +export default config; diff --git a/configs/envs/.env.eth b/configs/envs/.env.eth index 03b34c0c40..9db55f4508 100644 --- a/configs/envs/.env.eth +++ b/configs/envs/.env.eth @@ -54,6 +54,7 @@ NEXT_PUBLIC_MARKETPLACE_SUGGEST_IDEAS_FORM=https://airtable.com/appiy5yijZpMMSKj NEXT_PUBLIC_MARKETPLACE_SECURITY_REPORTS_URL=https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-security-reports/default.json NEXT_PUBLIC_MARKETPLACE_FEATURED_APP=gearbox-protocol NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true +NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG={'name': 'zerion', 'url': 'zerion', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} #meta NEXT_PUBLIC_OG_IMAGE_URL=https://github.com/blockscout/frontend-configs/blob/main/configs/og-images/eth.jpg?raw=true diff --git a/deploy/tools/envs-validator/schema.ts b/deploy/tools/envs-validator/schema.ts index f9f5319310..0245cd5113 100644 --- a/deploy/tools/envs-validator/schema.ts +++ b/deploy/tools/envs-validator/schema.ts @@ -15,6 +15,7 @@ import type { ContractCodeIde } from '../../../types/client/contract'; import { GAS_UNITS } from '../../../types/client/gasTracker'; import type { GasUnit } from '../../../types/client/gasTracker'; import type { MarketplaceAppOverview, MarketplaceAppSecurityReportRaw, MarketplaceAppSecurityReport } from '../../../types/client/marketplace'; +import type { MultichainProviderConfig } from '../../../types/client/multichainProviderConfig'; import { NAVIGATION_LINK_IDS } from '../../../types/client/navigation-items'; import type { NavItemExternal, NavigationLinkId } from '../../../types/client/navigation-items'; import { ROLLUP_TYPES } from '../../../types/client/rollup'; @@ -620,6 +621,11 @@ const schema = yup NEXT_PUBLIC_HAS_USER_OPS: yup.boolean(), NEXT_PUBLIC_METASUITES_ENABLED: yup.boolean(), NEXT_PUBLIC_SWAP_BUTTON_URL: yup.string(), + NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG: yup.object().transform(replaceQuotes).json().shape({ + name: yup.string().required(), + url: yup.string().required(), + logo: yup.string(), + }).nullable().notRequired(), NEXT_PUBLIC_VALIDATORS_CHAIN_TYPE: yup.string().oneOf(VALIDATORS_CHAIN_TYPE), NEXT_PUBLIC_GAS_TRACKER_ENABLED: yup.boolean(), NEXT_PUBLIC_GAS_TRACKER_UNITS: yup.array().transform(replaceQuotes).json().of(yup.string().oneOf(GAS_UNITS)), diff --git a/docs/ENVS.md b/docs/ENVS.md index e00f564827..fb5e2034f7 100644 --- a/docs/ENVS.md +++ b/docs/ENVS.md @@ -57,6 +57,7 @@ Please be aware that all environment variables prefixed with `NEXT_PUBLIC_` will - [Sentry error monitoring](ENVS.md#sentry-error-monitoring) - [OpenTelemetry](ENVS.md#opentelemetry) - [Swap button](ENVS.md#swap-button) + - [Multichain balance button](ENVS.md#multichain-button) - [3rd party services configuration](ENVS.md#external-services-configuration)   @@ -679,6 +680,26 @@ If the feature is enabled, a Swap button will be displayed at the top of the exp   +### Multichain balance button + +If the feature is enabled, a Multichain balance button will be displayed on the address page, which will take you to the portfolio application in the marketplace or to an external site. + +| Variable | Type| Description | Compulsoriness | Default value | Example value | +| --- | --- | --- | --- | --- | --- | +| NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG | `{ name: string; url: string; logo?: string }` | Multichain portfolio application config See [below](#multichain-button-configuration-properties) | - | - | `{ name: 'zerion', url: 'zerion', logo: 'https://example.com/icon.svg'` | + +  + +#### Multichain button configuration properties + +| Variable | Type| Description | Compulsoriness | Default value | Example value | +| --- | --- | --- | --- | --- | --- | +| name | `string` | Multichain portfolio application name | Required | - | `zerion` | +| url | `string` | Application ID in the marketplace or website URL | Required | - | `zerion` | +| logo | `string` | Multichain portfolio application logo (.svg) url | - | - | `https://example.com/icon.svg` | + +  + ## External services configuration ### Google ReCaptcha diff --git a/lib/mixpanel/utils.ts b/lib/mixpanel/utils.ts index da788cf794..0d0b7bfc98 100644 --- a/lib/mixpanel/utils.ts +++ b/lib/mixpanel/utils.ts @@ -128,7 +128,7 @@ Type extends EventTypes.FILTERS ? { 'Filter name': string; } : Type extends EventTypes.BUTTON_CLICK ? { - 'Content': 'Swap button'; + 'Content': 'Swap button' | 'Multichain'; 'Source': string; } : Type extends EventTypes.PROMO_BANNER ? { diff --git a/mocks/address/address.ts b/mocks/address/address.ts index 8ed50dca22..029ac10463 100644 --- a/mocks/address/address.ts +++ b/mocks/address/address.ts @@ -75,7 +75,7 @@ export const token: Address = { coin_balance: '1', creation_tx_hash: '0xc38cf7377bf72d6436f63c37b01b24d032101f20ec1849286dc703c712f10c98', creator_address_hash: '0x34A9c688512ebdB575e82C50c9803F6ba2916E72', - exchange_rate: null, + exchange_rate: '0.04311', implementation_address: null, has_decompiled_code: false, has_logs: false, diff --git a/types/client/multichainProviderConfig.ts b/types/client/multichainProviderConfig.ts new file mode 100644 index 0000000000..db5c58e55c --- /dev/null +++ b/types/client/multichainProviderConfig.ts @@ -0,0 +1,5 @@ +export type MultichainProviderConfig = { + name: string; + url: string; + logo?: string; +}; diff --git a/ui/address/AddressCsvExportLink.tsx b/ui/address/AddressCsvExportLink.tsx index 6ef1d2dd0a..313de665c8 100644 --- a/ui/address/AddressCsvExportLink.tsx +++ b/ui/address/AddressCsvExportLink.tsx @@ -9,7 +9,7 @@ import config from 'configs/app'; import useIsInitialLoading from 'lib/hooks/useIsInitialLoading'; import useIsMobile from 'lib/hooks/useIsMobile'; import IconSvg from 'ui/shared/IconSvg'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; interface Props { address: string; diff --git a/ui/address/AddressDetails.tsx b/ui/address/AddressDetails.tsx index 3234694572..8c13f8fbc8 100644 --- a/ui/address/AddressDetails.tsx +++ b/ui/address/AddressDetails.tsx @@ -17,6 +17,7 @@ import TxEntity from 'ui/shared/entities/tx/TxEntity'; import AddressBalance from './details/AddressBalance'; import AddressNameInfo from './details/AddressNameInfo'; +import AddressNetWorth from './details/AddressNetWorth'; import TokenSelect from './tokenSelect/TokenSelect'; import useAddressCountersQuery from './utils/useAddressCountersQuery'; import type { AddressQuery } from './utils/useAddressQuery'; @@ -129,6 +130,17 @@ const AddressDetails = ({ addressQuery, scrollRef }: Props) => { { addressQuery.data ? : 0 } ) } + { (data.exchange_rate && data.has_tokens) && ( + + + + ) + } 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 diff --git a/ui/address/__screenshots__/AddressDetails.pw.tsx_default_mobile-contract-1.png b/ui/address/__screenshots__/AddressDetails.pw.tsx_default_mobile-contract-1.png index 898e416ffec0a561eaa719206c90b87c502923fd..ed48f080326a68771a8ef87a55e95a130f62d3c3 100644 GIT binary patch literal 35039 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 z

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 diff --git a/ui/address/__screenshots__/AddressDetails.pw.tsx_default_mobile-validator-1.png b/ui/address/__screenshots__/AddressDetails.pw.tsx_default_mobile-validator-1.png index c4761b89238fca8f826bd747bd534ab5d67295e7..c94f3f0827e01be7b7a099b181c9629267745cb2 100644 GIT binary patch literal 27311 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 VdKGZg;1{SM>MEMb2qlX*{|7yvaJm2h literal 27245 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�XoV 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 oyo?_4V_9!-d?56HVOrs+z4>Ec)YQ@l$$ed { return ( { + await mockApiResponse('address_tokens', tokensMock.erc20List, { pathParams: { hash: ADDRESS_HASH }, queryParams: { type: 'ERC-20' } }); + await mockApiResponse('address_tokens', tokensMock.erc721List, { pathParams: { hash: ADDRESS_HASH }, queryParams: { type: 'ERC-721' } }); + await mockApiResponse('address_tokens', tokensMock.erc1155List, { pathParams: { hash: ADDRESS_HASH }, queryParams: { type: 'ERC-1155' } }); + await mockApiResponse('address_tokens', tokensMock.erc404List, { pathParams: { hash: ADDRESS_HASH }, queryParams: { type: 'ERC-404' } }); +}); + +test('base view', async({ mount }) => { + const component = await mount( + + + , + ); + + await expect(component).toHaveScreenshot(); +}); + +test('with multichain button internal +@dark-mode', async({ mount, mockEnvs, mockAssetResponse }) => { + await mockEnvs([ + [ 'NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG', `{"name": "zerion", "url": "zerion", "logo": "${ ICON_URL }"}` ], + ]); + await mockAssetResponse(ICON_URL, './playwright/mocks/image_svg.svg'); + + const component = await mount( + + + , + ); + + await expect(component).toHaveScreenshot(); +}); + +test('with multichain button external', async({ mount, mockEnvs, mockAssetResponse }) => { + await mockEnvs([ + [ 'NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG', `{"name": "zerion", "url": "https://duck.url", "logo": "${ ICON_URL }"}` ], + ]); + await mockAssetResponse(ICON_URL, './playwright/mocks/image_svg.svg'); + + const component = await mount( + + + , + ); + + await expect(component).toHaveScreenshot(); +}); diff --git a/ui/address/details/AddressNetWorth.tsx b/ui/address/details/AddressNetWorth.tsx new file mode 100644 index 0000000000..bd6d95e7d4 --- /dev/null +++ b/ui/address/details/AddressNetWorth.tsx @@ -0,0 +1,99 @@ +import { Image, Skeleton, Text } from '@chakra-ui/react'; +import _capitalize from 'lodash/capitalize'; +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 multichainFeature = config.features.multichainButton; + +type Props = { + addressData?: Address; + isLoading?: boolean; +} + +const AddressNetWorth = ({ addressData, isLoading }: Props) => { + const { data, isError, isPending } = useFetchTokens({ hash: addressData?.hash }); + + const { usdBn: nativeUsd } = getCurrencyValue({ + value: addressData?.coin_balance || '0', + accuracy: 8, + accuracyUsd: 2, + exchangeRate: addressData?.exchange_rate, + decimals: String(config.chain.currency.decimals), + }); + + const { usd, isOverflow } = getTokensTotalInfo(data); + const prefix = isOverflow ? '>' : ''; + + const totalUsd = nativeUsd.plus(usd); + + const onMultichainClick = React.useCallback(() => { + mixpanel.logEvent(mixpanel.EventTypes.BUTTON_CLICK, { Content: 'Multichain', Source: 'address' }); + }, []); + + let multichainItem = null; + + if (multichainFeature.isEnabled) { + const buttonContent = ( + <> + { multichainFeature.logoUrl && + { + } + { _capitalize(multichainFeature.name) } + ); + + const linkProps = { + variant: 'subtle' as const, + display: 'flex', + alignItems: 'center', + fontSize: 'sm', + fontWeight: 500, + onClick: onMultichainClick, + }; + + multichainItem = ( + <> + + Multichain + { 'url' in multichainFeature ? ( + + { buttonContent } + + ) : ( + + { buttonContent } + + ) } + + ); + } + + return ( + + + { isError ? 'N/A' : `${ prefix }$${ totalUsd.toFormat(2) }` } + + { multichainItem } + + ); +}; + +export default AddressNetWorth; 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 new file mode 100644 index 0000000000000000000000000000000000000000..349ae0725d542e70d8190a82c5687d949bd1892d GIT binary patch literal 5902 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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 new file mode 100644 index 0000000000000000000000000000000000000000..007dc909808e24cd6a8f3817440011acbb147776 GIT binary patch literal 2803 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 S!FQlc41%b`)T&i&U;ZBnT0*}7 literal 0 HcmV?d00001 diff --git a/ui/address/ensDomains/AddressEnsDomains.tsx b/ui/address/ensDomains/AddressEnsDomains.tsx index a67612535d..6dcabfcbdd 100644 --- a/ui/address/ensDomains/AddressEnsDomains.tsx +++ b/ui/address/ensDomains/AddressEnsDomains.tsx @@ -25,7 +25,7 @@ import useApiQuery from 'lib/api/useApiQuery'; import dayjs from 'lib/date/dayjs'; import EnsEntity from 'ui/shared/entities/ens/EnsEntity'; import IconSvg from 'ui/shared/IconSvg'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import PopoverTriggerTooltip from 'ui/shared/PopoverTriggerTooltip'; interface Props { diff --git a/ui/address/tokenSelect/TokenSelectItem.tsx b/ui/address/tokenSelect/TokenSelectItem.tsx index fc7d6cde27..94d12f24a5 100644 --- a/ui/address/tokenSelect/TokenSelectItem.tsx +++ b/ui/address/tokenSelect/TokenSelectItem.tsx @@ -6,7 +6,7 @@ import { route } from 'nextjs-routes'; import getCurrencyValue from 'lib/getCurrencyValue'; import TokenEntity from 'ui/shared/entities/token/TokenEntity'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import TruncatedValue from 'ui/shared/TruncatedValue'; import type { TokenEnhancedData } from '../utils/tokenUtils'; diff --git a/ui/address/tokens/AddressCollections.tsx b/ui/address/tokens/AddressCollections.tsx index caf185a30c..16b4202508 100644 --- a/ui/address/tokens/AddressCollections.tsx +++ b/ui/address/tokens/AddressCollections.tsx @@ -8,7 +8,7 @@ import { apos } from 'lib/html-entities'; import ActionBar from 'ui/shared/ActionBar'; import DataListDisplay from 'ui/shared/DataListDisplay'; import TokenEntity from 'ui/shared/entities/token/TokenEntity'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import NftFallback from 'ui/shared/nft/NftFallback'; import Pagination from 'ui/shared/pagination/Pagination'; import type { QueryWithPagesResult } from 'ui/shared/pagination/useQueryWithPages'; diff --git a/ui/address/utils/useFetchTokens.ts b/ui/address/utils/useFetchTokens.ts index 53055d9ced..0ef43b146d 100644 --- a/ui/address/utils/useFetchTokens.ts +++ b/ui/address/utils/useFetchTokens.ts @@ -12,6 +12,7 @@ import useSocketMessage from 'lib/socket/useSocketMessage'; import { calculateUsdValue } from './tokenUtils'; interface Props { hash?: string; + enabled?: boolean; } const tokenBalanceItemIdentityFactory = (match: AddressTokenBalance) => (item: AddressTokenBalance) => (( @@ -20,26 +21,26 @@ const tokenBalanceItemIdentityFactory = (match: AddressTokenBalance) => (item: A match.token_instance?.id === item.token_instance?.id )); -export default function useFetchTokens({ hash }: Props) { +export default function useFetchTokens({ hash, enabled }: Props) { const erc20query = useApiQuery('address_tokens', { pathParams: { hash }, queryParams: { type: 'ERC-20' }, - queryOptions: { enabled: Boolean(hash), refetchOnMount: false }, + queryOptions: { enabled: Boolean(hash) && enabled, refetchOnMount: false }, }); const erc721query = useApiQuery('address_tokens', { pathParams: { hash }, queryParams: { type: 'ERC-721' }, - queryOptions: { enabled: Boolean(hash), refetchOnMount: false }, + queryOptions: { enabled: Boolean(hash) && enabled, refetchOnMount: false }, }); const erc1155query = useApiQuery('address_tokens', { pathParams: { hash }, queryParams: { type: 'ERC-1155' }, - queryOptions: { enabled: Boolean(hash), refetchOnMount: false }, + queryOptions: { enabled: Boolean(hash) && enabled, refetchOnMount: false }, }); const erc404query = useApiQuery('address_tokens', { pathParams: { hash }, queryParams: { type: 'ERC-404' }, - queryOptions: { enabled: Boolean(hash), refetchOnMount: false }, + queryOptions: { enabled: Boolean(hash) && enabled, refetchOnMount: false }, }); const queryClient = useQueryClient(); diff --git a/ui/addressVerification/steps/AddressVerificationStepAddress.tsx b/ui/addressVerification/steps/AddressVerificationStepAddress.tsx index a68e37ebbf..5cf1c9d223 100644 --- a/ui/addressVerification/steps/AddressVerificationStepAddress.tsx +++ b/ui/addressVerification/steps/AddressVerificationStepAddress.tsx @@ -16,7 +16,7 @@ import { route } from 'nextjs-routes'; import config from 'configs/app'; import type { ResourceError } from 'lib/api/resources'; import useApiFetch from 'lib/api/useApiFetch'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import AdminSupportText from 'ui/shared/texts/AdminSupportText'; import AddressVerificationFieldAddress from '../fields/AddressVerificationFieldAddress'; diff --git a/ui/block/BlockDetails.tsx b/ui/block/BlockDetails.tsx index 49777319f4..0cc9489ec6 100644 --- a/ui/block/BlockDetails.tsx +++ b/ui/block/BlockDetails.tsx @@ -25,7 +25,7 @@ import BatchEntityL2 from 'ui/shared/entities/block/BatchEntityL2'; import GasUsedToTargetRatio from 'ui/shared/GasUsedToTargetRatio'; import HashStringShortenDynamic from 'ui/shared/HashStringShortenDynamic'; import IconSvg from 'ui/shared/IconSvg'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import PrevNext from 'ui/shared/PrevNext'; import RawDataSnippet from 'ui/shared/RawDataSnippet'; import TextSeparator from 'ui/shared/TextSeparator'; diff --git a/ui/blocks/BlocksListItem.tsx b/ui/blocks/BlocksListItem.tsx index b037221691..ea12fd5a1f 100644 --- a/ui/blocks/BlocksListItem.tsx +++ b/ui/blocks/BlocksListItem.tsx @@ -17,7 +17,7 @@ import AddressEntity from 'ui/shared/entities/address/AddressEntity'; import BlockEntity from 'ui/shared/entities/block/BlockEntity'; import GasUsedToTargetRatio from 'ui/shared/GasUsedToTargetRatio'; import IconSvg from 'ui/shared/IconSvg'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import ListItemMobile from 'ui/shared/ListItemMobile/ListItemMobile'; import TextSeparator from 'ui/shared/TextSeparator'; import Utilization from 'ui/shared/Utilization/Utilization'; diff --git a/ui/blocks/BlocksTableItem.tsx b/ui/blocks/BlocksTableItem.tsx index fd5e434bcc..1560bfa1f3 100644 --- a/ui/blocks/BlocksTableItem.tsx +++ b/ui/blocks/BlocksTableItem.tsx @@ -15,7 +15,7 @@ import AddressEntity from 'ui/shared/entities/address/AddressEntity'; import BlockEntity from 'ui/shared/entities/block/BlockEntity'; import GasUsedToTargetRatio from 'ui/shared/GasUsedToTargetRatio'; import IconSvg from 'ui/shared/IconSvg'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import TextSeparator from 'ui/shared/TextSeparator'; import Utilization from 'ui/shared/Utilization/Utilization'; diff --git a/ui/gasTracker/GasTrackerChart.tsx b/ui/gasTracker/GasTrackerChart.tsx index 8bab0d8d1b..a85991db8c 100644 --- a/ui/gasTracker/GasTrackerChart.tsx +++ b/ui/gasTracker/GasTrackerChart.tsx @@ -7,7 +7,7 @@ import useApiQuery from 'lib/api/useApiQuery'; import { STATS_CHARTS } from 'stubs/stats'; import ContentLoader from 'ui/shared/ContentLoader'; import DataFetchAlert from 'ui/shared/DataFetchAlert'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import ChartWidgetContainer from 'ui/stats/ChartWidgetContainer'; const GAS_PRICE_CHART_ID = 'averageGasPrice'; diff --git a/ui/home/LatestBlocks.tsx b/ui/home/LatestBlocks.tsx index 789f4ec686..417a8375f4 100644 --- a/ui/home/LatestBlocks.tsx +++ b/ui/home/LatestBlocks.tsx @@ -16,7 +16,7 @@ import useSocketChannel from 'lib/socket/useSocketChannel'; import useSocketMessage from 'lib/socket/useSocketMessage'; import { BLOCK } from 'stubs/block'; import { HOMEPAGE_STATS } from 'stubs/stats'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import LatestBlocksItem from './LatestBlocksItem'; diff --git a/ui/home/LatestDeposits.tsx b/ui/home/LatestDeposits.tsx index ed5518e722..89558bad0f 100644 --- a/ui/home/LatestDeposits.tsx +++ b/ui/home/LatestDeposits.tsx @@ -11,7 +11,7 @@ import useIsMobile from 'lib/hooks/useIsMobile'; import useSocketChannel from 'lib/socket/useSocketChannel'; import useSocketMessage from 'lib/socket/useSocketMessage'; import { L2_DEPOSIT_ITEM } from 'stubs/L2'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import SocketNewItemsNotice from 'ui/shared/SocketNewItemsNotice'; import LatestDepositsItem from './LatestDepositsItem'; diff --git a/ui/home/LatestTxs.tsx b/ui/home/LatestTxs.tsx index 34af8b6832..7246f93cbb 100644 --- a/ui/home/LatestTxs.tsx +++ b/ui/home/LatestTxs.tsx @@ -8,7 +8,7 @@ import { AddressHighlightProvider } from 'lib/contexts/addressHighlight'; import useIsMobile from 'lib/hooks/useIsMobile'; import useNewTxsSocket from 'lib/hooks/useNewTxsSocket'; import { TX } from 'stubs/tx'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import SocketNewItemsNotice from 'ui/shared/SocketNewItemsNotice'; import LatestTxsItem from './LatestTxsItem'; diff --git a/ui/home/LatestWatchlistTxs.tsx b/ui/home/LatestWatchlistTxs.tsx index f191b80d96..87bf0cf48d 100644 --- a/ui/home/LatestWatchlistTxs.tsx +++ b/ui/home/LatestWatchlistTxs.tsx @@ -7,7 +7,7 @@ import useApiQuery from 'lib/api/useApiQuery'; import useIsMobile from 'lib/hooks/useIsMobile'; import useRedirectForInvalidAuthToken from 'lib/hooks/useRedirectForInvalidAuthToken'; import { TX } from 'stubs/tx'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import LatestTxsItem from './LatestTxsItem'; import LatestTxsItemMobile from './LatestTxsItemMobile'; diff --git a/ui/home/LatestZkEvmL2Batches.tsx b/ui/home/LatestZkEvmL2Batches.tsx index c908139f86..a9fe76c8a8 100644 --- a/ui/home/LatestZkEvmL2Batches.tsx +++ b/ui/home/LatestZkEvmL2Batches.tsx @@ -13,7 +13,7 @@ import useIsMobile from 'lib/hooks/useIsMobile'; import useSocketChannel from 'lib/socket/useSocketChannel'; import useSocketMessage from 'lib/socket/useSocketMessage'; import { ZKEVM_L2_TXN_BATCHES_ITEM } from 'stubs/zkEvmL2'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import LatestZkevmL2BatchItem from './LatestZkevmL2BatchItem'; diff --git a/ui/home/LatestZkevmL2BatchItem.tsx b/ui/home/LatestZkevmL2BatchItem.tsx index 26388226bc..c43a6322ea 100644 --- a/ui/home/LatestZkevmL2BatchItem.tsx +++ b/ui/home/LatestZkevmL2BatchItem.tsx @@ -12,7 +12,7 @@ import { route } from 'nextjs-routes'; import BlockTimestamp from 'ui/blocks/BlockTimestamp'; import BatchEntityL2 from 'ui/shared/entities/block/BatchEntityL2'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import ZkEvmL2TxnBatchStatus from 'ui/shared/statusTag/ZkEvmL2TxnBatchStatus'; type Props = { diff --git a/ui/marketplace/ContractSecurityReport.tsx b/ui/marketplace/ContractSecurityReport.tsx index 42e28b06dd..fe52eef07c 100644 --- a/ui/marketplace/ContractSecurityReport.tsx +++ b/ui/marketplace/ContractSecurityReport.tsx @@ -5,7 +5,7 @@ import type { SolidityscanReport } from 'types/api/contract'; import config from 'configs/app'; import * as mixpanel from 'lib/mixpanel/index'; -import LinkExternal from 'ui/shared/LinkExternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; import SolidityscanReportButton from 'ui/shared/solidityscanReport/SolidityscanReportButton'; import SolidityscanReportDetails from 'ui/shared/solidityscanReport/SolidityscanReportDetails'; import SolidityscanReportScore from 'ui/shared/solidityscanReport/SolidityscanReportScore'; diff --git a/ui/marketplace/EmptySearchResult.tsx b/ui/marketplace/EmptySearchResult.tsx index e744768be6..7d3185019d 100644 --- a/ui/marketplace/EmptySearchResult.tsx +++ b/ui/marketplace/EmptySearchResult.tsx @@ -6,7 +6,7 @@ import config from 'configs/app'; import { apos } from 'lib/html-entities'; import EmptySearchResultDefault from 'ui/shared/EmptySearchResult'; import IconSvg from 'ui/shared/IconSvg'; -import LinkExternal from 'ui/shared/LinkExternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; const feature = config.features.marketplace; diff --git a/ui/marketplace/MarketplaceAppTopBar.tsx b/ui/marketplace/MarketplaceAppTopBar.tsx index f342b05866..892e48554f 100644 --- a/ui/marketplace/MarketplaceAppTopBar.tsx +++ b/ui/marketplace/MarketplaceAppTopBar.tsx @@ -10,8 +10,8 @@ import config from 'configs/app'; import { useAppContext } from 'lib/contexts/app'; import useIsMobile from 'lib/hooks/useIsMobile'; import IconSvg from 'ui/shared/IconSvg'; -import LinkExternal from 'ui/shared/LinkExternal'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import NetworkLogo from 'ui/snippets/networkMenu/NetworkLogo'; import ProfileMenuDesktop from 'ui/snippets/profileMenu/ProfileMenuDesktop'; import WalletMenuDesktop from 'ui/snippets/walletMenu/WalletMenuDesktop'; diff --git a/ui/nameDomain/NameDomainDetails.tsx b/ui/nameDomain/NameDomainDetails.tsx index 91a74c95ee..473b7862ea 100644 --- a/ui/nameDomain/NameDomainDetails.tsx +++ b/ui/nameDomain/NameDomainDetails.tsx @@ -12,7 +12,7 @@ import DetailsInfoItem from 'ui/shared/DetailsInfoItem'; import AddressEntity from 'ui/shared/entities/address/AddressEntity'; import NftEntity from 'ui/shared/entities/nft/NftEntity'; import IconSvg from 'ui/shared/IconSvg'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import TextSeparator from 'ui/shared/TextSeparator'; import NameDomainExpiryStatus from './NameDomainExpiryStatus'; diff --git a/ui/pages/Marketplace.tsx b/ui/pages/Marketplace.tsx index 11c8776db8..6cd802acad 100644 --- a/ui/pages/Marketplace.tsx +++ b/ui/pages/Marketplace.tsx @@ -17,7 +17,7 @@ import MarketplaceListWithScores from 'ui/marketplace/MarketplaceListWithScores' import FilterInput from 'ui/shared/filters/FilterInput'; import IconSvg from 'ui/shared/IconSvg'; import type { IconName } from 'ui/shared/IconSvg'; -import LinkExternal from 'ui/shared/LinkExternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; import PageTitle from 'ui/shared/Page/PageTitle'; import RadioButtonGroup from 'ui/shared/radioButtonGroup/RadioButtonGroup'; import TabsWithScroll from 'ui/shared/Tabs/TabsWithScroll'; diff --git a/ui/pages/NameDomain.tsx b/ui/pages/NameDomain.tsx index cf3977e8c5..25a6aad07e 100644 --- a/ui/pages/NameDomain.tsx +++ b/ui/pages/NameDomain.tsx @@ -17,7 +17,7 @@ import TextAd from 'ui/shared/ad/TextAd'; import AddressEntity from 'ui/shared/entities/address/AddressEntity'; import EnsEntity from 'ui/shared/entities/ens/EnsEntity'; import IconSvg from 'ui/shared/IconSvg'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import PageTitle from 'ui/shared/Page/PageTitle'; import RoutedTabs from 'ui/shared/Tabs/RoutedTabs'; import TabsSkeleton from 'ui/shared/Tabs/TabsSkeleton'; diff --git a/ui/pages/TokenInstance.tsx b/ui/pages/TokenInstance.tsx index 174ba5afc6..d6d5495336 100644 --- a/ui/pages/TokenInstance.tsx +++ b/ui/pages/TokenInstance.tsx @@ -23,7 +23,7 @@ import TextAd from 'ui/shared/ad/TextAd'; import AddressAddToWallet from 'ui/shared/address/AddressAddToWallet'; import Tag from 'ui/shared/chakra/Tag'; import TokenEntity from 'ui/shared/entities/token/TokenEntity'; -import LinkExternal from 'ui/shared/LinkExternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; import PageTitle from 'ui/shared/Page/PageTitle'; import Pagination from 'ui/shared/pagination/Pagination'; import useQueryWithPages from 'ui/shared/pagination/useQueryWithPages'; diff --git a/ui/searchResults/SearchResultListItem.tsx b/ui/searchResults/SearchResultListItem.tsx index d09cb77983..7e09563da2 100644 --- a/ui/searchResults/SearchResultListItem.tsx +++ b/ui/searchResults/SearchResultListItem.tsx @@ -20,8 +20,8 @@ import * as TxEntity from 'ui/shared/entities/tx/TxEntity'; import * as UserOpEntity from 'ui/shared/entities/userOp/UserOpEntity'; import HashStringShortenDynamic from 'ui/shared/HashStringShortenDynamic'; import IconSvg from 'ui/shared/IconSvg'; -import LinkExternal from 'ui/shared/LinkExternal'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import ListItemMobile from 'ui/shared/ListItemMobile/ListItemMobile'; import type { SearchResultAppItem } from 'ui/shared/search/utils'; import { getItemCategory, searchItemTitles } from 'ui/shared/search/utils'; diff --git a/ui/searchResults/SearchResultTableItem.tsx b/ui/searchResults/SearchResultTableItem.tsx index d9a1cf6d74..f9ef315802 100644 --- a/ui/searchResults/SearchResultTableItem.tsx +++ b/ui/searchResults/SearchResultTableItem.tsx @@ -20,8 +20,8 @@ import * as TxEntity from 'ui/shared/entities/tx/TxEntity'; import * as UserOpEntity from 'ui/shared/entities/userOp/UserOpEntity'; import HashStringShortenDynamic from 'ui/shared/HashStringShortenDynamic'; import IconSvg from 'ui/shared/IconSvg'; -import LinkExternal from 'ui/shared/LinkExternal'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import type { SearchResultAppItem } from 'ui/shared/search/utils'; import { getItemCategory, searchItemTitles } from 'ui/shared/search/utils'; interface Props { diff --git a/ui/shared/AppActionButton/AppActionButton.tsx b/ui/shared/AppActionButton/AppActionButton.tsx index ad93311e74..4751ff82dc 100644 --- a/ui/shared/AppActionButton/AppActionButton.tsx +++ b/ui/shared/AppActionButton/AppActionButton.tsx @@ -8,7 +8,7 @@ import { route } from 'nextjs-routes'; import config from 'configs/app'; import * as mixpanel from 'lib/mixpanel/index'; -import LinkExternal from '../LinkExternal'; +import LinkExternal from '../links/LinkExternal'; type Props = { data: NonNullable; diff --git a/ui/shared/EntityTags/EntityTagLink.tsx b/ui/shared/EntityTags/EntityTagLink.tsx index 423032f311..4b1beea667 100644 --- a/ui/shared/EntityTags/EntityTagLink.tsx +++ b/ui/shared/EntityTags/EntityTagLink.tsx @@ -4,8 +4,8 @@ import React from 'react'; import type { EntityTag } from './types'; import * as mixpanel from 'lib/mixpanel/index'; -import LinkExternal from 'ui/shared/LinkExternal'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import { getTagLinkParams } from './utils'; diff --git a/ui/shared/EntityTags/EntityTagPopover.tsx b/ui/shared/EntityTags/EntityTagPopover.tsx index 1451918ce8..cf03bb4b7d 100644 --- a/ui/shared/EntityTags/EntityTagPopover.tsx +++ b/ui/shared/EntityTags/EntityTagPopover.tsx @@ -5,7 +5,7 @@ import type { EntityTag } from './types'; import makePrettyLink from 'lib/makePrettyLink'; import * as mixpanel from 'lib/mixpanel/index'; -import LinkExternal from 'ui/shared/LinkExternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; interface Props { data: EntityTag; diff --git a/ui/shared/LinkInternal.tsx b/ui/shared/LinkInternal.tsx deleted file mode 100644 index b46b369096..0000000000 --- a/ui/shared/LinkInternal.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import type { LinkProps, FlexProps } from '@chakra-ui/react'; -import { Flex, Link } from '@chakra-ui/react'; -import type { LinkProps as NextLinkProps } from 'next/link'; -import NextLink from 'next/link'; -import type { LegacyRef } from 'react'; -import React from 'react'; - -const LinkInternal = ({ isLoading, ...props }: LinkProps & { isLoading?: boolean }, ref: LegacyRef) => { - if (isLoading) { - return { props.children }; - } - - if (!props.href) { - return ; - } - - return ( - - - - ); -}; - -export default React.memo(React.forwardRef(LinkInternal)); diff --git a/ui/shared/NetworkExplorers.tsx b/ui/shared/NetworkExplorers.tsx index 200341f87e..1cd0866d0c 100644 --- a/ui/shared/NetworkExplorers.tsx +++ b/ui/shared/NetworkExplorers.tsx @@ -19,7 +19,7 @@ import type { NetworkExplorer as TNetworkExplorer } from 'types/networks'; import config from 'configs/app'; import stripTrailingSlash from 'lib/stripTrailingSlash'; import IconSvg from 'ui/shared/IconSvg'; -import LinkExternal from 'ui/shared/LinkExternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; import PopoverTriggerTooltip from 'ui/shared/PopoverTriggerTooltip'; interface Props { diff --git a/ui/shared/Page/PageTitle.tsx b/ui/shared/Page/PageTitle.tsx index 8c6e2f5d53..a5932039b8 100644 --- a/ui/shared/Page/PageTitle.tsx +++ b/ui/shared/Page/PageTitle.tsx @@ -5,7 +5,7 @@ import React from 'react'; import useIsMobile from 'lib/hooks/useIsMobile'; import TextAd from 'ui/shared/ad/TextAd'; import IconSvg from 'ui/shared/IconSvg'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; type BackLinkProp = { label: string; url: string } | { label: string; onClick: () => void }; diff --git a/ui/shared/entities/base/components.tsx b/ui/shared/entities/base/components.tsx index ef2447f001..5d43e8b3c4 100644 --- a/ui/shared/entities/base/components.tsx +++ b/ui/shared/entities/base/components.tsx @@ -8,8 +8,8 @@ import HashStringShorten from 'ui/shared/HashStringShorten'; import HashStringShortenDynamic from 'ui/shared/HashStringShortenDynamic'; import type { IconName } from 'ui/shared/IconSvg'; import IconSvg from 'ui/shared/IconSvg'; -import LinkExternal from 'ui/shared/LinkExternal'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import { getIconProps, type IconSize } from './utils'; diff --git a/ui/shared/gas/GasInfoTooltip.tsx b/ui/shared/gas/GasInfoTooltip.tsx index de1edcecaa..469caf89d8 100644 --- a/ui/shared/gas/GasInfoTooltip.tsx +++ b/ui/shared/gas/GasInfoTooltip.tsx @@ -7,7 +7,7 @@ import { route } from 'nextjs-routes'; import config from 'configs/app'; import dayjs from 'lib/date/dayjs'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import GasInfoTooltipRow from './GasInfoTooltipRow'; import GasInfoUpdateTimer from './GasInfoUpdateTimer'; diff --git a/ui/shared/LinkExternal.tsx b/ui/shared/links/LinkExternal.tsx similarity index 63% rename from ui/shared/LinkExternal.tsx rename to ui/shared/links/LinkExternal.tsx index 31aaa7593d..757b794a73 100644 --- a/ui/shared/LinkExternal.tsx +++ b/ui/shared/links/LinkExternal.tsx @@ -1,44 +1,29 @@ -import type { ChakraProps, LinkProps } from '@chakra-ui/react'; -import { Link, chakra, Box, Skeleton, useColorModeValue } from '@chakra-ui/react'; +import type { LinkProps } from '@chakra-ui/react'; +import { Link, chakra, Box, Skeleton } from '@chakra-ui/react'; import React from 'react'; import IconSvg from 'ui/shared/IconSvg'; +import type { Variants } from './useLinkStyles'; +import { useLinkStyles } from './useLinkStyles'; + interface Props { href: string; className?: string; children: React.ReactNode; isLoading?: boolean; - variant?: 'subtle'; + variant?: Variants; iconColor?: LinkProps['color']; onClick?: LinkProps['onClick']; } const LinkExternal = ({ href, children, className, isLoading, variant, iconColor, onClick }: Props) => { - const subtleLinkBg = useColorModeValue('gray.100', 'gray.700'); - - const styleProps: ChakraProps = (() => { - const commonProps = { - display: 'inline-block', - alignItems: 'center', - }; + const commonProps = { + display: 'inline-block', + alignItems: 'center', + }; - switch (variant) { - case 'subtle': { - return { - ...commonProps, - px: '10px', - py: '6px', - bgColor: subtleLinkBg, - borderRadius: 'base', - }; - } - - default:{ - return commonProps; - } - } - })(); + const styleProps = useLinkStyles(commonProps, variant); if (isLoading) { if (variant === 'subtle') { diff --git a/ui/shared/links/LinkInternal.tsx b/ui/shared/links/LinkInternal.tsx new file mode 100644 index 0000000000..7f0055a815 --- /dev/null +++ b/ui/shared/links/LinkInternal.tsx @@ -0,0 +1,34 @@ +import type { LinkProps, FlexProps } from '@chakra-ui/react'; +import { Flex, Link } from '@chakra-ui/react'; +import type { LinkProps as NextLinkProps } from 'next/link'; +import NextLink from 'next/link'; +import type { LegacyRef } from 'react'; +import React from 'react'; + +import type { Variants } from './useLinkStyles'; +import { useLinkStyles } from './useLinkStyles'; + +type Props = LinkProps & { + variant?: Variants; + isLoading?: boolean; +} + +const LinkInternal = ({ isLoading, variant, ...props }: Props, ref: LegacyRef) => { + const styleProps = useLinkStyles({}, variant); + + if (isLoading) { + return { props.children }; + } + + if (!props.href) { + return ; + } + + return ( + + + + ); +}; + +export default React.memo(React.forwardRef(LinkInternal)); diff --git a/ui/shared/links/useLinkStyles.ts b/ui/shared/links/useLinkStyles.ts new file mode 100644 index 0000000000..b44ca5052f --- /dev/null +++ b/ui/shared/links/useLinkStyles.ts @@ -0,0 +1,24 @@ +import type { ChakraProps } from '@chakra-ui/react'; +import { useColorModeValue } from '@chakra-ui/react'; + +export type Variants = 'subtle' + +export function useLinkStyles(commonProps: ChakraProps, variant?: Variants) { + const subtleLinkBg = useColorModeValue('gray.100', 'gray.700'); + + switch (variant) { + case 'subtle': { + return { + ...commonProps, + px: '10px', + py: '6px', + bgColor: subtleLinkBg, + borderRadius: 'base', + }; + } + + default:{ + return commonProps; + } + } +} diff --git a/ui/snippets/searchBar/SearchBar.tsx b/ui/snippets/searchBar/SearchBar.tsx index b119829dbc..6c14b17399 100644 --- a/ui/snippets/searchBar/SearchBar.tsx +++ b/ui/snippets/searchBar/SearchBar.tsx @@ -20,7 +20,7 @@ import { route } from 'nextjs-routes'; import useIsMobile from 'lib/hooks/useIsMobile'; import * as mixpanel from 'lib/mixpanel/index'; import { getRecentSearchKeywords, saveToRecentKeywords } from 'lib/recentSearchKeywords'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import SearchBarBackdrop from './SearchBarBackdrop'; import SearchBarInput from './SearchBarInput'; diff --git a/ui/token/TokenInventoryItem.tsx b/ui/token/TokenInventoryItem.tsx index dc504a80b5..d1ea257658 100644 --- a/ui/token/TokenInventoryItem.tsx +++ b/ui/token/TokenInventoryItem.tsx @@ -7,7 +7,7 @@ import { route } from 'nextjs-routes'; import useIsMobile from 'lib/hooks/useIsMobile'; import AddressEntity from 'ui/shared/entities/address/AddressEntity'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import NftMedia from 'ui/shared/nft/NftMedia'; import TruncatedTextTooltip from 'ui/shared/TruncatedTextTooltip'; diff --git a/ui/token/TokenVerifiedInfo.tsx b/ui/token/TokenVerifiedInfo.tsx index 56af8bda88..28f69bee4e 100644 --- a/ui/token/TokenVerifiedInfo.tsx +++ b/ui/token/TokenVerifiedInfo.tsx @@ -6,7 +6,7 @@ import type { TokenVerifiedInfo as TTokenVerifiedInfo } from 'types/api/token'; import config from 'configs/app'; import type { ResourceError } from 'lib/api/resources'; -import LinkExternal from 'ui/shared/LinkExternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; import TokenProjectInfo from './TokenProjectInfo'; diff --git a/ui/tokenInstance/details/TokenInstanceMetadataInfo.tsx b/ui/tokenInstance/details/TokenInstanceMetadataInfo.tsx index 85dd53856c..a330699c13 100644 --- a/ui/tokenInstance/details/TokenInstanceMetadataInfo.tsx +++ b/ui/tokenInstance/details/TokenInstanceMetadataInfo.tsx @@ -7,7 +7,7 @@ import type { MetadataAttributes } from 'types/client/token'; import parseMetadata from 'lib/token/parseMetadata'; import DetailsInfoItem from 'ui/shared/DetailsInfoItem'; import DetailsInfoItemDivider from 'ui/shared/DetailsInfoItemDivider'; -import LinkExternal from 'ui/shared/LinkExternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; import TruncatedValue from 'ui/shared/TruncatedValue'; interface Props { diff --git a/ui/tokenInstance/details/TokenInstanceTransfersCount.tsx b/ui/tokenInstance/details/TokenInstanceTransfersCount.tsx index 0635df72d3..2e3f7d95db 100644 --- a/ui/tokenInstance/details/TokenInstanceTransfersCount.tsx +++ b/ui/tokenInstance/details/TokenInstanceTransfersCount.tsx @@ -5,7 +5,7 @@ import { route } from 'nextjs-routes'; import useApiQuery from 'lib/api/useApiQuery'; import DetailsInfoItem from 'ui/shared/DetailsInfoItem'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; interface Props { hash: string; diff --git a/ui/tokenInstance/metadata/MetadataItemPrimitive.tsx b/ui/tokenInstance/metadata/MetadataItemPrimitive.tsx index 24a08b47fc..256290b5e7 100644 --- a/ui/tokenInstance/metadata/MetadataItemPrimitive.tsx +++ b/ui/tokenInstance/metadata/MetadataItemPrimitive.tsx @@ -3,7 +3,7 @@ import React from 'react'; import type { Primitive } from 'react-hook-form'; import urlParser from 'lib/token/metadata/urlParser'; -import LinkExternal from 'ui/shared/LinkExternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; import MetadataAccordionItem from './MetadataAccordionItem'; import MetadataAccordionItemTitle from './MetadataAccordionItemTitle'; diff --git a/ui/tx/details/TxDetailsTokenTransfers.tsx b/ui/tx/details/TxDetailsTokenTransfers.tsx index fb728c3887..b46135cf97 100644 --- a/ui/tx/details/TxDetailsTokenTransfers.tsx +++ b/ui/tx/details/TxDetailsTokenTransfers.tsx @@ -7,7 +7,7 @@ import { route } from 'nextjs-routes'; import DetailsInfoItem from 'ui/shared/DetailsInfoItem'; import IconSvg from 'ui/shared/IconSvg'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import TxDetailsTokenTransfer from './TxDetailsTokenTransfer'; diff --git a/ui/txnBatches/optimisticL2/OptimisticL2TxnBatchesListItem.tsx b/ui/txnBatches/optimisticL2/OptimisticL2TxnBatchesListItem.tsx index 4a322b02e7..4638a54ea2 100644 --- a/ui/txnBatches/optimisticL2/OptimisticL2TxnBatchesListItem.tsx +++ b/ui/txnBatches/optimisticL2/OptimisticL2TxnBatchesListItem.tsx @@ -9,7 +9,7 @@ import config from 'configs/app'; import dayjs from 'lib/date/dayjs'; import BlockEntityL2 from 'ui/shared/entities/block/BlockEntityL2'; import TxEntityL1 from 'ui/shared/entities/tx/TxEntityL1'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import ListItemMobileGrid from 'ui/shared/ListItemMobile/ListItemMobileGrid'; const rollupFeature = config.features.rollup; diff --git a/ui/txnBatches/optimisticL2/OptimisticL2TxnBatchesTableItem.tsx b/ui/txnBatches/optimisticL2/OptimisticL2TxnBatchesTableItem.tsx index 4cc1b9e4b9..fff8a75b38 100644 --- a/ui/txnBatches/optimisticL2/OptimisticL2TxnBatchesTableItem.tsx +++ b/ui/txnBatches/optimisticL2/OptimisticL2TxnBatchesTableItem.tsx @@ -9,7 +9,7 @@ import config from 'configs/app'; import dayjs from 'lib/date/dayjs'; import BlockEntityL2 from 'ui/shared/entities/block/BlockEntityL2'; import TxEntityL1 from 'ui/shared/entities/tx/TxEntityL1'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; const rollupFeature = config.features.rollup; diff --git a/ui/txnBatches/zkEvmL2/ZkEvmL2TxnBatchDetails.tsx b/ui/txnBatches/zkEvmL2/ZkEvmL2TxnBatchDetails.tsx index 950a2ccec7..870cfd80d6 100644 --- a/ui/txnBatches/zkEvmL2/ZkEvmL2TxnBatchDetails.tsx +++ b/ui/txnBatches/zkEvmL2/ZkEvmL2TxnBatchDetails.tsx @@ -18,7 +18,7 @@ import DetailsInfoItemDivider from 'ui/shared/DetailsInfoItemDivider'; import DetailsTimestamp from 'ui/shared/DetailsTimestamp'; import TxEntityL1 from 'ui/shared/entities/tx/TxEntityL1'; import HashStringShortenDynamic from 'ui/shared/HashStringShortenDynamic'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import PrevNext from 'ui/shared/PrevNext'; import VerificationSteps from 'ui/shared/verificationSteps/VerificationSteps'; diff --git a/ui/txnBatches/zkEvmL2/ZkEvmTxnBatchesListItem.tsx b/ui/txnBatches/zkEvmL2/ZkEvmTxnBatchesListItem.tsx index 401e64bbf3..454c4e887c 100644 --- a/ui/txnBatches/zkEvmL2/ZkEvmTxnBatchesListItem.tsx +++ b/ui/txnBatches/zkEvmL2/ZkEvmTxnBatchesListItem.tsx @@ -9,7 +9,7 @@ import config from 'configs/app'; import dayjs from 'lib/date/dayjs'; import BatchEntityL2 from 'ui/shared/entities/block/BatchEntityL2'; import TxEntityL1 from 'ui/shared/entities/tx/TxEntityL1'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import ListItemMobileGrid from 'ui/shared/ListItemMobile/ListItemMobileGrid'; import ZkEvmL2TxnBatchStatus from 'ui/shared/statusTag/ZkEvmL2TxnBatchStatus'; diff --git a/ui/txnBatches/zkEvmL2/ZkEvmTxnBatchesTableItem.tsx b/ui/txnBatches/zkEvmL2/ZkEvmTxnBatchesTableItem.tsx index a22c3e3fcd..f3742611f3 100644 --- a/ui/txnBatches/zkEvmL2/ZkEvmTxnBatchesTableItem.tsx +++ b/ui/txnBatches/zkEvmL2/ZkEvmTxnBatchesTableItem.tsx @@ -9,7 +9,7 @@ import config from 'configs/app'; import dayjs from 'lib/date/dayjs'; import BatchEntityL2 from 'ui/shared/entities/block/BatchEntityL2'; import TxEntityL1 from 'ui/shared/entities/tx/TxEntityL1'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import ZkEvmL2TxnBatchStatus from 'ui/shared/statusTag/ZkEvmL2TxnBatchStatus'; const rollupFeature = config.features.rollup; diff --git a/ui/txnBatches/zkSyncL2/ZkSyncL2TxnBatchDetails.tsx b/ui/txnBatches/zkSyncL2/ZkSyncL2TxnBatchDetails.tsx index 8505177d25..687c97cfbe 100644 --- a/ui/txnBatches/zkSyncL2/ZkSyncL2TxnBatchDetails.tsx +++ b/ui/txnBatches/zkSyncL2/ZkSyncL2TxnBatchDetails.tsx @@ -19,7 +19,7 @@ import DataFetchAlert from 'ui/shared/DataFetchAlert'; import DetailsInfoItem from 'ui/shared/DetailsInfoItem'; import DetailsInfoItemDivider from 'ui/shared/DetailsInfoItemDivider'; import DetailsTimestamp from 'ui/shared/DetailsTimestamp'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import PrevNext from 'ui/shared/PrevNext'; import TruncatedValue from 'ui/shared/TruncatedValue'; import VerificationSteps from 'ui/shared/verificationSteps/VerificationSteps'; diff --git a/ui/txnBatches/zkSyncL2/ZkSyncTxnBatchesListItem.tsx b/ui/txnBatches/zkSyncL2/ZkSyncTxnBatchesListItem.tsx index d930604763..ac7d6d6fbc 100644 --- a/ui/txnBatches/zkSyncL2/ZkSyncTxnBatchesListItem.tsx +++ b/ui/txnBatches/zkSyncL2/ZkSyncTxnBatchesListItem.tsx @@ -9,7 +9,7 @@ import config from 'configs/app'; import dayjs from 'lib/date/dayjs'; import BatchEntityL2 from 'ui/shared/entities/block/BatchEntityL2'; import TxEntityL1 from 'ui/shared/entities/tx/TxEntityL1'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import ListItemMobileGrid from 'ui/shared/ListItemMobile/ListItemMobileGrid'; import ZkSyncL2TxnBatchStatus from 'ui/shared/statusTag/ZkSyncL2TxnBatchStatus'; diff --git a/ui/txnBatches/zkSyncL2/ZkSyncTxnBatchesTableItem.tsx b/ui/txnBatches/zkSyncL2/ZkSyncTxnBatchesTableItem.tsx index 82a2f93fdf..674d53d41a 100644 --- a/ui/txnBatches/zkSyncL2/ZkSyncTxnBatchesTableItem.tsx +++ b/ui/txnBatches/zkSyncL2/ZkSyncTxnBatchesTableItem.tsx @@ -9,7 +9,7 @@ import config from 'configs/app'; import dayjs from 'lib/date/dayjs'; import BatchEntityL2 from 'ui/shared/entities/block/BatchEntityL2'; import TxEntityL1 from 'ui/shared/entities/tx/TxEntityL1'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import ZkSyncL2TxnBatchStatus from 'ui/shared/statusTag/ZkSyncL2TxnBatchStatus'; const rollupFeature = config.features.rollup; diff --git a/ui/txs/TxAdditionalInfoContent.tsx b/ui/txs/TxAdditionalInfoContent.tsx index 88588ea06a..26a1d4ee78 100644 --- a/ui/txs/TxAdditionalInfoContent.tsx +++ b/ui/txs/TxAdditionalInfoContent.tsx @@ -11,7 +11,7 @@ import getValueWithUnit from 'lib/getValueWithUnit'; import { currencyUnits } from 'lib/units'; import CurrencyValue from 'ui/shared/CurrencyValue'; import BlobEntity from 'ui/shared/entities/blob/BlobEntity'; -import LinkInternal from 'ui/shared/LinkInternal'; +import LinkInternal from 'ui/shared/links/LinkInternal'; import TextSeparator from 'ui/shared/TextSeparator'; import TxFeeStability from 'ui/shared/tx/TxFeeStability'; import Utilization from 'ui/shared/Utilization/Utilization'; diff --git a/ui/withdrawals/optimisticL2/OptimisticL2WithdrawalsListItem.tsx b/ui/withdrawals/optimisticL2/OptimisticL2WithdrawalsListItem.tsx index af58d02600..4aa040f0f2 100644 --- a/ui/withdrawals/optimisticL2/OptimisticL2WithdrawalsListItem.tsx +++ b/ui/withdrawals/optimisticL2/OptimisticL2WithdrawalsListItem.tsx @@ -8,7 +8,7 @@ import dayjs from 'lib/date/dayjs'; import AddressEntity from 'ui/shared/entities/address/AddressEntity'; import TxEntity from 'ui/shared/entities/tx/TxEntity'; import TxEntityL1 from 'ui/shared/entities/tx/TxEntityL1'; -import LinkExternal from 'ui/shared/LinkExternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; import ListItemMobileGrid from 'ui/shared/ListItemMobile/ListItemMobileGrid'; const rollupFeature = config.features.rollup; diff --git a/ui/withdrawals/optimisticL2/OptimisticL2WithdrawalsTableItem.tsx b/ui/withdrawals/optimisticL2/OptimisticL2WithdrawalsTableItem.tsx index ea6104c1fd..8f8d4ee583 100644 --- a/ui/withdrawals/optimisticL2/OptimisticL2WithdrawalsTableItem.tsx +++ b/ui/withdrawals/optimisticL2/OptimisticL2WithdrawalsTableItem.tsx @@ -8,7 +8,7 @@ import dayjs from 'lib/date/dayjs'; import AddressEntity from 'ui/shared/entities/address/AddressEntity'; import TxEntity from 'ui/shared/entities/tx/TxEntity'; import TxEntityL1 from 'ui/shared/entities/tx/TxEntityL1'; -import LinkExternal from 'ui/shared/LinkExternal'; +import LinkExternal from 'ui/shared/links/LinkExternal'; const rollupFeature = config.features.rollup; From eb61e491e614a073b4909065c99bd462d91bb72c Mon Sep 17 00:00:00 2001 From: isstuev Date: Wed, 15 May 2024 18:11:12 +0200 Subject: [PATCH 2/5] fix schema validation for NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG --- configs/app/features/multichainButton.ts | 28 ++++------------------ configs/envs/.env.eth | 2 +- deploy/tools/envs-validator/schema.ts | 17 +++++++++---- deploy/tools/envs-validator/test/.env.base | 2 ++ docs/ENVS.md | 4 ++-- types/client/multichainProviderConfig.ts | 2 +- ui/address/AddressDetails.tsx | 5 ++-- ui/address/details/AddressNetWorth.pw.tsx | 10 ++++---- ui/address/details/AddressNetWorth.tsx | 27 ++++++++++++++------- 9 files changed, 48 insertions(+), 49 deletions(-) diff --git a/configs/app/features/multichainButton.ts b/configs/app/features/multichainButton.ts index 8ebc1d53dc..3d52d466bc 100644 --- a/configs/app/features/multichainButton.ts +++ b/configs/app/features/multichainButton.ts @@ -2,40 +2,20 @@ import type { Feature } from './types'; import type { MultichainProviderConfig } from 'types/client/multichainProviderConfig'; import { getEnvValue, parseEnvJson } from '../utils'; -import marketplace from './marketplace'; const value = parseEnvJson(getEnvValue('NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG')); const title = 'Multichain button'; -function isValidUrl(string: string) { - try { - new URL(string); - return true; - } catch (error) { - return false; - } -} - -const config: Feature<{name: string; logoUrl?: string } & ({ dappId: string } | { url: string })> = (() => { +const config: Feature<{name: string; logoUrl?: string; url_template: string }> = (() => { if (value) { - const enabledOptions = { + return Object.freeze({ title, isEnabled: true as const, name: value.name, logoUrl: value.logo, - }; - if (isValidUrl(value.url)) { - return Object.freeze({ - ...enabledOptions, - url: value.url, - }); - } else if (marketplace.isEnabled) { - return Object.freeze({ - ...enabledOptions, - dappId: value.url, - }); - } + url_template: value.url_template, + }); } return Object.freeze({ diff --git a/configs/envs/.env.eth b/configs/envs/.env.eth index 9db55f4508..70b0e6948e 100644 --- a/configs/envs/.env.eth +++ b/configs/envs/.env.eth @@ -54,7 +54,7 @@ NEXT_PUBLIC_MARKETPLACE_SUGGEST_IDEAS_FORM=https://airtable.com/appiy5yijZpMMSKj NEXT_PUBLIC_MARKETPLACE_SECURITY_REPORTS_URL=https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-security-reports/default.json NEXT_PUBLIC_MARKETPLACE_FEATURED_APP=gearbox-protocol NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true -NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG={'name': 'zerion', 'url': 'zerion', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} +NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG={'name': 'zerion', 'url_template': '/apps/zerion/{address}/overview', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} #meta NEXT_PUBLIC_OG_IMAGE_URL=https://github.com/blockscout/frontend-configs/blob/main/configs/og-images/eth.jpg?raw=true diff --git a/deploy/tools/envs-validator/schema.ts b/deploy/tools/envs-validator/schema.ts index 0245cd5113..c88d230189 100644 --- a/deploy/tools/envs-validator/schema.ts +++ b/deploy/tools/envs-validator/schema.ts @@ -621,11 +621,18 @@ const schema = yup NEXT_PUBLIC_HAS_USER_OPS: yup.boolean(), NEXT_PUBLIC_METASUITES_ENABLED: yup.boolean(), NEXT_PUBLIC_SWAP_BUTTON_URL: yup.string(), - NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG: yup.object().transform(replaceQuotes).json().shape({ - name: yup.string().required(), - url: yup.string().required(), - logo: yup.string(), - }).nullable().notRequired(), + NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG: yup + .mixed() + .test('shape', 'Invalid schema were provided for NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG, it should have name and url props', (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(), + }); + + return isUndefined || valueSchema.isValidSync(data); + }), NEXT_PUBLIC_VALIDATORS_CHAIN_TYPE: yup.string().oneOf(VALIDATORS_CHAIN_TYPE), NEXT_PUBLIC_GAS_TRACKER_ENABLED: yup.boolean(), NEXT_PUBLIC_GAS_TRACKER_UNITS: yup.array().transform(replaceQuotes).json().of(yup.string().oneOf(GAS_UNITS)), diff --git a/deploy/tools/envs-validator/test/.env.base b/deploy/tools/envs-validator/test/.env.base index 333e329b88..c326068bb8 100644 --- a/deploy/tools/envs-validator/test/.env.base +++ b/deploy/tools/envs-validator/test/.env.base @@ -74,3 +74,5 @@ NEXT_PUBLIC_WEB3_DISABLE_ADD_TOKEN_TO_WALLET=false NEXT_PUBLIC_WEB3_WALLETS=['coinbase','metamask','token_pocket'] NEXT_PUBLIC_SWAP_BUTTON_URL=uniswap NEXT_PUBLIC_VALIDATORS_CHAIN_TYPE=stability +NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG={'name': 'zerion', 'url_template': '/apps/zerion/{address}/overview', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} + diff --git a/docs/ENVS.md b/docs/ENVS.md index fb5e2034f7..2e8e756c2f 100644 --- a/docs/ENVS.md +++ b/docs/ENVS.md @@ -686,7 +686,7 @@ If the feature is enabled, a Multichain balance button will be displayed on the | Variable | Type| Description | Compulsoriness | Default value | Example value | | --- | --- | --- | --- | --- | --- | -| NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG | `{ name: string; url: string; logo?: string }` | Multichain portfolio application config See [below](#multichain-button-configuration-properties) | - | - | `{ name: 'zerion', url: 'zerion', logo: 'https://example.com/icon.svg'` | +| NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG | `{ name: string; url_template: string; logo?: string }` | Multichain portfolio application config See [below](#multichain-button-configuration-properties) | - | - | `{ name: 'zerion', url_template: '/apps/zerion/{address}/overview', logo: 'https://example.com/icon.svg'` |   @@ -695,7 +695,7 @@ If the feature is enabled, a Multichain balance button will be displayed on the | Variable | Type| Description | Compulsoriness | Default value | Example value | | --- | --- | --- | --- | --- | --- | | name | `string` | Multichain portfolio application name | Required | - | `zerion` | -| url | `string` | Application ID in the marketplace or website URL | Required | - | `zerion` | +| url_template | `string` | Absolute (for external links) or relative (for internal links) path template to the portfolio. Should be a template with `{address}` variable | Required | - | `/apps/zerion/{address}/overview` | | logo | `string` | Multichain portfolio application logo (.svg) url | - | - | `https://example.com/icon.svg` |   diff --git a/types/client/multichainProviderConfig.ts b/types/client/multichainProviderConfig.ts index db5c58e55c..fbec165ef3 100644 --- a/types/client/multichainProviderConfig.ts +++ b/types/client/multichainProviderConfig.ts @@ -1,5 +1,5 @@ export type MultichainProviderConfig = { name: string; - url: string; + url_template: string; logo?: string; }; diff --git a/ui/address/AddressDetails.tsx b/ui/address/AddressDetails.tsx index 8c13f8fbc8..a4b6d0ae59 100644 --- a/ui/address/AddressDetails.tsx +++ b/ui/address/AddressDetails.tsx @@ -2,6 +2,7 @@ import { Box, Text, Grid } from '@chakra-ui/react'; import { useRouter } from 'next/router'; import React from 'react'; +import config from 'configs/app'; import throwOnResourceLoadError from 'lib/errors/throwOnResourceLoadError'; import useIsMounted from 'lib/hooks/useIsMounted'; import getQueryParamString from 'lib/router/getQueryParamString'; @@ -130,14 +131,14 @@ const AddressDetails = ({ addressQuery, scrollRef }: Props) => { { addressQuery.data ? : 0 } ) } - { (data.exchange_rate && data.has_tokens) && ( + { (config.features.multichainButton.isEnabled || (data.exchange_rate && data.has_tokens)) && ( - + ) } diff --git a/ui/address/details/AddressNetWorth.pw.tsx b/ui/address/details/AddressNetWorth.pw.tsx index 2fa00b42ea..f9102b7086 100644 --- a/ui/address/details/AddressNetWorth.pw.tsx +++ b/ui/address/details/AddressNetWorth.pw.tsx @@ -20,7 +20,7 @@ test.beforeEach(async({ mockApiResponse }) => { test('base view', async({ mount }) => { const component = await mount( - + , ); @@ -29,13 +29,13 @@ test('base view', async({ mount }) => { test('with multichain button internal +@dark-mode', async({ mount, mockEnvs, mockAssetResponse }) => { await mockEnvs([ - [ 'NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG', `{"name": "zerion", "url": "zerion", "logo": "${ ICON_URL }"}` ], + [ 'NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG', `{"name": "zerion", "url_template": "/apps/zerion/{address}/overview", "logo": "${ ICON_URL }"}` ], ]); await mockAssetResponse(ICON_URL, './playwright/mocks/image_svg.svg'); const component = await mount( - + , ); @@ -44,13 +44,13 @@ test('with multichain button internal +@dark-mode', async({ mount, mockEnvs, moc test('with multichain button external', async({ mount, mockEnvs, mockAssetResponse }) => { await mockEnvs([ - [ 'NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG', `{"name": "zerion", "url": "https://duck.url", "logo": "${ ICON_URL }"}` ], + [ 'NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG', `{"name": "zerion", "url_template": "https://duck.url/{address}", "logo": "${ ICON_URL }"}` ], ]); await mockAssetResponse(ICON_URL, './playwright/mocks/image_svg.svg'); const component = await mount( - + , ); diff --git a/ui/address/details/AddressNetWorth.tsx b/ui/address/details/AddressNetWorth.tsx index bd6d95e7d4..c4c66046a5 100644 --- a/ui/address/details/AddressNetWorth.tsx +++ b/ui/address/details/AddressNetWorth.tsx @@ -4,11 +4,10 @@ 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 * as regexp from 'lib/regexp'; import LinkExternal from 'ui/shared/links/LinkExternal'; import LinkInternal from 'ui/shared/links/LinkInternal'; import TextSeparator from 'ui/shared/TextSeparator'; @@ -16,15 +15,18 @@ import TextSeparator from 'ui/shared/TextSeparator'; import { getTokensTotalInfo } from '../utils/tokenUtils'; import useFetchTokens from '../utils/useFetchTokens'; +const TEMPLATE_ADDRESS = '{address}'; + const multichainFeature = config.features.multichainButton; type Props = { + addressHash: string; addressData?: Address; isLoading?: boolean; } -const AddressNetWorth = ({ addressData, isLoading }: Props) => { - const { data, isError, isPending } = useFetchTokens({ hash: addressData?.hash }); +const AddressNetWorth = ({ addressData, isLoading, addressHash }: Props) => { + const { data, isError, isPending } = useFetchTokens({ hash: addressData?.hash, enabled: addressData?.has_tokens }); const { usdBn: nativeUsd } = getCurrencyValue({ value: addressData?.coin_balance || '0', @@ -63,20 +65,27 @@ const AddressNetWorth = ({ addressData, isLoading }: Props) => { onClick: onMultichainClick, }; + const urlString = multichainFeature.url_template.replace(TEMPLATE_ADDRESS, addressHash); + const isExternal = regexp.URL_PREFIX.test(urlString); + const url = isExternal ? new URL(urlString) : new URL(urlString, config.app.baseUrl); + + url.searchParams.append('utm_source', 'blockscout'); + url.searchParams.append('utm_medium', 'address'); + multichainItem = ( <> Multichain - { 'url' in multichainFeature ? ( + { isExternal ? ( { buttonContent } ) : ( { buttonContent } @@ -87,9 +96,9 @@ const AddressNetWorth = ({ addressData, isLoading }: Props) => { } return ( - + - { isError ? 'N/A' : `${ prefix }$${ totalUsd.toFormat(2) }` } + { (isError || !addressData?.exchange_rate) ? 'N/A' : `${ prefix }$${ totalUsd.toFormat(2) }` } { multichainItem } From 76ed5543fe286d4a3ad0624ff34071118fe6484e Mon Sep 17 00:00:00 2001 From: isstuev Date: Fri, 17 May 2024 13:39:32 +0200 Subject: [PATCH 3/5] change portfolio url logics --- configs/app/features/multichainButton.ts | 4 ++- configs/envs/.env.eth | 4 ++- deploy/tools/envs-validator/schema.ts | 3 +- deploy/tools/envs-validator/test/.env.base | 2 +- docs/ENVS.md | 5 ++-- types/client/multichainProviderConfig.ts | 1 + ui/address/details/AddressNetWorth.pw.tsx | 4 +-- ui/address/details/AddressNetWorth.tsx | 27 +++++++++--------- ...multichain-button-internal-dark-mode-1.png | Bin 5902 -> 5788 bytes ...ault_with-multichain-button-external-1.png | Bin 5860 -> 5699 bytes ...multichain-button-internal-dark-mode-1.png | Bin 5716 -> 5553 bytes 11 files changed, 29 insertions(+), 21 deletions(-) diff --git a/configs/app/features/multichainButton.ts b/configs/app/features/multichainButton.ts index 3d52d466bc..d513595577 100644 --- a/configs/app/features/multichainButton.ts +++ b/configs/app/features/multichainButton.ts @@ -2,12 +2,13 @@ import type { Feature } from './types'; import type { MultichainProviderConfig } from 'types/client/multichainProviderConfig'; import { getEnvValue, parseEnvJson } from '../utils'; +import marketplace from './marketplace'; const value = parseEnvJson(getEnvValue('NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG')); const title = 'Multichain button'; -const config: Feature<{name: string; logoUrl?: string; url_template: string }> = (() => { +const config: Feature<{name: string; logoUrl?: string; url_template: string; dapp_id?: string }> = (() => { if (value) { return Object.freeze({ title, @@ -15,6 +16,7 @@ const config: Feature<{name: string; logoUrl?: string; url_template: string }> = name: value.name, logoUrl: value.logo, url_template: value.url_template, + dapp_id: marketplace.isEnabled ? value.dapp_id : undefined, }); } diff --git a/configs/envs/.env.eth b/configs/envs/.env.eth index 70b0e6948e..04a74c1b71 100644 --- a/configs/envs/.env.eth +++ b/configs/envs/.env.eth @@ -54,9 +54,11 @@ NEXT_PUBLIC_MARKETPLACE_SUGGEST_IDEAS_FORM=https://airtable.com/appiy5yijZpMMSKj NEXT_PUBLIC_MARKETPLACE_SECURITY_REPORTS_URL=https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-security-reports/default.json NEXT_PUBLIC_MARKETPLACE_FEATURED_APP=gearbox-protocol NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true -NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG={'name': 'zerion', 'url_template': '/apps/zerion/{address}/overview', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} +NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG={'name': 'zerion', 'dapp_id': 'zerion', 'url_template': 'https://app.zerion.io/{address}/overview', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} #meta NEXT_PUBLIC_OG_IMAGE_URL=https://github.com/blockscout/frontend-configs/blob/main/configs/og-images/eth.jpg?raw=true NEXT_PUBLIC_OG_ENHANCED_DATA_ENABLED=true NEXT_PUBLIC_SEO_ENHANCED_DATA_ENABLED=true +NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID=xxx + diff --git a/deploy/tools/envs-validator/schema.ts b/deploy/tools/envs-validator/schema.ts index c88d230189..01944b0661 100644 --- a/deploy/tools/envs-validator/schema.ts +++ b/deploy/tools/envs-validator/schema.ts @@ -623,12 +623,13 @@ const schema = yup NEXT_PUBLIC_SWAP_BUTTON_URL: yup.string(), NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG: yup .mixed() - .test('shape', 'Invalid schema were provided for NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG, it should have name and url props', (data) => { + .test('shape', 'Invalid schema were provided for NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG, it should have name and url 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); diff --git a/deploy/tools/envs-validator/test/.env.base b/deploy/tools/envs-validator/test/.env.base index c326068bb8..7b63a1aaac 100644 --- a/deploy/tools/envs-validator/test/.env.base +++ b/deploy/tools/envs-validator/test/.env.base @@ -74,5 +74,5 @@ NEXT_PUBLIC_WEB3_DISABLE_ADD_TOKEN_TO_WALLET=false NEXT_PUBLIC_WEB3_WALLETS=['coinbase','metamask','token_pocket'] NEXT_PUBLIC_SWAP_BUTTON_URL=uniswap NEXT_PUBLIC_VALIDATORS_CHAIN_TYPE=stability -NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG={'name': 'zerion', 'url_template': '/apps/zerion/{address}/overview', 'logo': 'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-logos/zerion.svg'} +NEXT_PUBLIC_MULTICHAIN_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'} diff --git a/docs/ENVS.md b/docs/ENVS.md index 2e8e756c2f..1a2ec039d3 100644 --- a/docs/ENVS.md +++ b/docs/ENVS.md @@ -686,7 +686,7 @@ If the feature is enabled, a Multichain balance button will be displayed on the | Variable | Type| Description | Compulsoriness | Default value | Example value | | --- | --- | --- | --- | --- | --- | -| NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG | `{ name: string; url_template: string; logo?: string }` | Multichain portfolio application config See [below](#multichain-button-configuration-properties) | - | - | `{ name: 'zerion', url_template: '/apps/zerion/{address}/overview', logo: 'https://example.com/icon.svg'` | +| NEXT_PUBLIC_MULTICHAIN_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'` |   @@ -695,7 +695,8 @@ If the feature is enabled, a Multichain balance button will be displayed on the | Variable | Type| Description | Compulsoriness | Default value | Example value | | --- | --- | --- | --- | --- | --- | | name | `string` | Multichain portfolio application name | Required | - | `zerion` | -| url_template | `string` | Absolute (for external links) or relative (for internal links) path template to the portfolio. Should be a template with `{address}` variable | Required | - | `/apps/zerion/{address}/overview` | +| url_template | `string` | Url template to the portfolio. Should be a template with `{address}` variable | Required | - | `https://app.zerion.io/{address}/overview` | +| dapp_id | `string` | Set for open a Blockscout dapp page with the portfolio instead of opening external app page | - | - | `zerion` | | logo | `string` | Multichain portfolio application logo (.svg) url | - | - | `https://example.com/icon.svg` |   diff --git a/types/client/multichainProviderConfig.ts b/types/client/multichainProviderConfig.ts index fbec165ef3..fbdced386f 100644 --- a/types/client/multichainProviderConfig.ts +++ b/types/client/multichainProviderConfig.ts @@ -1,5 +1,6 @@ export type MultichainProviderConfig = { name: string; + dapp_id?: string; url_template: string; logo?: string; }; diff --git a/ui/address/details/AddressNetWorth.pw.tsx b/ui/address/details/AddressNetWorth.pw.tsx index f9102b7086..ea955c8091 100644 --- a/ui/address/details/AddressNetWorth.pw.tsx +++ b/ui/address/details/AddressNetWorth.pw.tsx @@ -29,7 +29,7 @@ test('base view', async({ mount }) => { test('with multichain button internal +@dark-mode', async({ mount, mockEnvs, mockAssetResponse }) => { await mockEnvs([ - [ 'NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG', `{"name": "zerion", "url_template": "/apps/zerion/{address}/overview", "logo": "${ ICON_URL }"}` ], + [ 'NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG', `{"name": "duck", "dapp_id": "duck", "url_template": "https://duck.url/{address}", "logo": "${ ICON_URL }"}` ], ]); await mockAssetResponse(ICON_URL, './playwright/mocks/image_svg.svg'); @@ -44,7 +44,7 @@ test('with multichain button internal +@dark-mode', async({ mount, mockEnvs, moc test('with multichain button external', async({ mount, mockEnvs, mockAssetResponse }) => { await mockEnvs([ - [ 'NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG', `{"name": "zerion", "url_template": "https://duck.url/{address}", "logo": "${ ICON_URL }"}` ], + [ 'NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG', `{"name": "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 c4c66046a5..10ef92febb 100644 --- a/ui/address/details/AddressNetWorth.tsx +++ b/ui/address/details/AddressNetWorth.tsx @@ -4,10 +4,11 @@ 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 * as regexp from 'lib/regexp'; import LinkExternal from 'ui/shared/links/LinkExternal'; import LinkInternal from 'ui/shared/links/LinkInternal'; import TextSeparator from 'ui/shared/TextSeparator'; @@ -65,31 +66,31 @@ const AddressNetWorth = ({ addressData, isLoading, addressHash }: Props) => { onClick: onMultichainClick, }; - const urlString = multichainFeature.url_template.replace(TEMPLATE_ADDRESS, addressHash); - const isExternal = regexp.URL_PREFIX.test(urlString); - const url = isExternal ? new URL(urlString) : new URL(urlString, config.app.baseUrl); + const portfolioUrlString = multichainFeature.url_template.replace(TEMPLATE_ADDRESS, addressHash); + const portfolioUrl = new URL(portfolioUrlString); + portfolioUrl.searchParams.append('utm_source', 'blockscout'); + portfolioUrl.searchParams.append('utm_medium', 'address'); - url.searchParams.append('utm_source', 'blockscout'); - url.searchParams.append('utm_medium', 'address'); + const dappId = multichainFeature.dapp_id; multichainItem = ( <> Multichain - { isExternal ? ( - { buttonContent } - + ) : ( - { buttonContent } - + ) } ); 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 index 349ae0725d542e70d8190a82c5687d949bd1892d..bea144869e59c5aacac54a5ad47875adb414ce4d 100644 GIT binary patch literal 5788 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 literal 5902 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 diff --git a/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-multichain-button-external-1.png b/ui/address/details/__screenshots__/AddressNetWorth.pw.tsx_default_with-multichain-button-external-1.png index 11aaf192d7fed8be8147a9bcb3632289e6987108..70ecd1959529394eb581bb4f153369885a99c9a1 100644 GIT binary patch literal 5699 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 HY0{J&O!&lNZ(AT;nCW)kM7Jzhnk8C58-}1NO1i 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 literal 5716 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 S!FQlc41%b`)T&i&U;ZBnT0*}7 From 8a4682591ba7b1949c9bec1faa43bfab08335c97 Mon Sep 17 00:00:00 2001 From: isstuev Date: Fri, 17 May 2024 17:21:00 +0200 Subject: [PATCH 4/5] change NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG --- configs/envs/.env.eth | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/envs/.env.eth b/configs/envs/.env.eth index 04a74c1b71..9ddabdbc7b 100644 --- a/configs/envs/.env.eth +++ b/configs/envs/.env.eth @@ -54,7 +54,7 @@ NEXT_PUBLIC_MARKETPLACE_SUGGEST_IDEAS_FORM=https://airtable.com/appiy5yijZpMMSKj NEXT_PUBLIC_MARKETPLACE_SECURITY_REPORTS_URL=https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-security-reports/default.json NEXT_PUBLIC_MARKETPLACE_FEATURED_APP=gearbox-protocol NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true -NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG={'name': 'zerion', 'dapp_id': '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_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'} #meta NEXT_PUBLIC_OG_IMAGE_URL=https://github.com/blockscout/frontend-configs/blob/main/configs/og-images/eth.jpg?raw=true From ae4c59ac1de9619ec192e5e354aa778601daff51 Mon Sep 17 00:00:00 2001 From: isstuev Date: Sun, 26 May 2024 12:48:16 +0200 Subject: [PATCH 5/5] review fixes --- configs/app/features/multichainButton.ts | 12 ++--- configs/envs/.env.eth | 3 +- deploy/tools/envs-validator/schema.ts | 4 +- deploy/tools/envs-validator/test/.env.base | 2 +- docs/ENVS.md | 2 +- ui/address/details/AddressNetWorth.pw.tsx | 31 ++++-------- ui/address/details/AddressNetWorth.tsx | 55 +++++++++++----------- ui/shared/EntityTags/EntityTagLink.tsx | 3 +- 8 files changed, 50 insertions(+), 62 deletions(-) diff --git a/configs/app/features/multichainButton.ts b/configs/app/features/multichainButton.ts index d513595577..47b1433d05 100644 --- a/configs/app/features/multichainButton.ts +++ b/configs/app/features/multichainButton.ts @@ -4,19 +4,19 @@ import type { MultichainProviderConfig } from 'types/client/multichainProviderCo import { getEnvValue, parseEnvJson } from '../utils'; import marketplace from './marketplace'; -const value = parseEnvJson(getEnvValue('NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG')); +const value = parseEnvJson(getEnvValue('NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG')); -const title = 'Multichain button'; +const title = 'Multichain balance'; -const config: Feature<{name: string; logoUrl?: string; url_template: string; dapp_id?: string }> = (() => { +const config: Feature<{name: string; logoUrl?: string; urlTemplate: string; dappId?: string }> = (() => { if (value) { return Object.freeze({ title, - isEnabled: true as const, + isEnabled: true, name: value.name, logoUrl: value.logo, - url_template: value.url_template, - dapp_id: marketplace.isEnabled ? value.dapp_id : undefined, + urlTemplate: value.url_template, + dappId: marketplace.isEnabled ? value.dapp_id : undefined, }); } diff --git a/configs/envs/.env.eth b/configs/envs/.env.eth index 9ddabdbc7b..59aaa0a2b1 100644 --- a/configs/envs/.env.eth +++ b/configs/envs/.env.eth @@ -54,11 +54,10 @@ NEXT_PUBLIC_MARKETPLACE_SUGGEST_IDEAS_FORM=https://airtable.com/appiy5yijZpMMSKj NEXT_PUBLIC_MARKETPLACE_SECURITY_REPORTS_URL=https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace-security-reports/default.json NEXT_PUBLIC_MARKETPLACE_FEATURED_APP=gearbox-protocol NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true -NEXT_PUBLIC_MULTICHAIN_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'} #meta NEXT_PUBLIC_OG_IMAGE_URL=https://github.com/blockscout/frontend-configs/blob/main/configs/og-images/eth.jpg?raw=true NEXT_PUBLIC_OG_ENHANCED_DATA_ENABLED=true NEXT_PUBLIC_SEO_ENHANCED_DATA_ENABLED=true -NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID=xxx diff --git a/deploy/tools/envs-validator/schema.ts b/deploy/tools/envs-validator/schema.ts index 01944b0661..e221c5af15 100644 --- a/deploy/tools/envs-validator/schema.ts +++ b/deploy/tools/envs-validator/schema.ts @@ -621,9 +621,9 @@ const schema = yup NEXT_PUBLIC_HAS_USER_OPS: yup.boolean(), NEXT_PUBLIC_METASUITES_ENABLED: yup.boolean(), NEXT_PUBLIC_SWAP_BUTTON_URL: yup.string(), - NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG: yup + NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG: yup .mixed() - .test('shape', 'Invalid schema were provided for NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG, it should have name and url url_template', (data) => { + .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(), diff --git a/deploy/tools/envs-validator/test/.env.base b/deploy/tools/envs-validator/test/.env.base index 7b63a1aaac..4d40f23db5 100644 --- a/deploy/tools/envs-validator/test/.env.base +++ b/deploy/tools/envs-validator/test/.env.base @@ -74,5 +74,5 @@ NEXT_PUBLIC_WEB3_DISABLE_ADD_TOKEN_TO_WALLET=false NEXT_PUBLIC_WEB3_WALLETS=['coinbase','metamask','token_pocket'] NEXT_PUBLIC_SWAP_BUTTON_URL=uniswap NEXT_PUBLIC_VALIDATORS_CHAIN_TYPE=stability -NEXT_PUBLIC_MULTICHAIN_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'} diff --git a/docs/ENVS.md b/docs/ENVS.md index 1a2ec039d3..92c933cca8 100644 --- a/docs/ENVS.md +++ b/docs/ENVS.md @@ -686,7 +686,7 @@ If the feature is enabled, a Multichain balance button will be displayed on the | Variable | Type| Description | Compulsoriness | Default value | Example value | | --- | --- | --- | --- | --- | --- | -| NEXT_PUBLIC_MULTICHAIN_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'` | +| 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'` |   diff --git a/ui/address/details/AddressNetWorth.pw.tsx b/ui/address/details/AddressNetWorth.pw.tsx index ea955c8091..f0aea8c36b 100644 --- a/ui/address/details/AddressNetWorth.pw.tsx +++ b/ui/address/details/AddressNetWorth.pw.tsx @@ -3,7 +3,6 @@ import React from 'react'; import * as addressMock from 'mocks/address/address'; import * as tokensMock from 'mocks/address/tokens'; import { test, expect } from 'playwright/lib'; -import TestApp from 'playwright/TestApp'; import AddressNetWorth from './AddressNetWorth'; @@ -17,42 +16,32 @@ test.beforeEach(async({ mockApiResponse }) => { await mockApiResponse('address_tokens', tokensMock.erc404List, { pathParams: { hash: ADDRESS_HASH }, queryParams: { type: 'ERC-404' } }); }); -test('base view', async({ mount }) => { - const component = await mount( - - - , - ); +test('base view', async({ render }) => { + const component = await render(); await expect(component).toHaveScreenshot(); }); -test('with multichain button internal +@dark-mode', async({ mount, mockEnvs, mockAssetResponse }) => { +test('with multichain button internal +@dark-mode', async({ render, mockEnvs, mockAssetResponse }) => { await mockEnvs([ - [ 'NEXT_PUBLIC_MULTICHAIN_PROVIDER_CONFIG', `{"name": "duck", "dapp_id": "duck", "url_template": "https://duck.url/{address}", "logo": "${ ICON_URL }"}` ], + [ + 'NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG', + `{"name": "duck", "dapp_id": "duck", "url_template": "https://duck.url/{address}", "logo": "${ ICON_URL }"}` ], ]); await mockAssetResponse(ICON_URL, './playwright/mocks/image_svg.svg'); - const component = await mount( - - - , - ); + const component = await render(); await expect(component).toHaveScreenshot(); }); -test('with multichain button external', async({ mount, mockEnvs, mockAssetResponse }) => { +test('with multichain button external', async({ render, mockEnvs, mockAssetResponse }) => { await mockEnvs([ - [ 'NEXT_PUBLIC_MULTICHAIN_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 mount( - - - , - ); + const component = await render(); await expect(component).toHaveScreenshot(); }); diff --git a/ui/address/details/AddressNetWorth.tsx b/ui/address/details/AddressNetWorth.tsx index 10ef92febb..b7e9468143 100644 --- a/ui/address/details/AddressNetWorth.tsx +++ b/ui/address/details/AddressNetWorth.tsx @@ -66,34 +66,35 @@ const AddressNetWorth = ({ addressData, isLoading, addressHash }: Props) => { onClick: onMultichainClick, }; - const portfolioUrlString = multichainFeature.url_template.replace(TEMPLATE_ADDRESS, addressHash); - const portfolioUrl = new URL(portfolioUrlString); - portfolioUrl.searchParams.append('utm_source', 'blockscout'); - portfolioUrl.searchParams.append('utm_medium', 'address'); + 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) {} - const dappId = multichainFeature.dapp_id; - - multichainItem = ( - <> - - Multichain - { typeof dappId === 'string' ? ( - - { buttonContent } - - ) : ( - - { buttonContent } - - ) } - - ); } return ( diff --git a/ui/shared/EntityTags/EntityTagLink.tsx b/ui/shared/EntityTags/EntityTagLink.tsx index 4b1beea667..a496eccd14 100644 --- a/ui/shared/EntityTags/EntityTagLink.tsx +++ b/ui/shared/EntityTags/EntityTagLink.tsx @@ -1,4 +1,3 @@ -import type { LinkProps } from '@chakra-ui/react'; import React from 'react'; import type { EntityTag } from './types'; @@ -30,7 +29,7 @@ const EntityTagLink = ({ data, children }: Props) => { }); }, [ linkParams?.href, data.slug ]); - const linkProps: LinkProps = { + const linkProps = { color: 'inherit', display: 'inline-flex', overflow: 'hidden',