diff --git a/.changeset/three-deers-kneel.md b/.changeset/three-deers-kneel.md new file mode 100644 index 0000000000..672541869f --- /dev/null +++ b/.changeset/three-deers-kneel.md @@ -0,0 +1,38 @@ +--- +'@reown/appkit-scaffold-ui': patch +'@apps/laboratory': patch +'@reown/appkit-core': patch +'@apps/demo': patch +'@apps/gallery': patch +'@examples/html-ethers': patch +'@examples/html-ethers5': patch +'@examples/html-wagmi': patch +'@examples/next-ethers': patch +'@examples/next-wagmi': patch +'@examples/react-ethers': patch +'@examples/react-ethers5': patch +'@examples/react-solana': patch +'@examples/react-wagmi': patch +'@examples/vue-ethers5': patch +'@examples/vue-solana': patch +'@examples/vue-wagmi': patch +'@reown/appkit-adapter-ethers': patch +'@reown/appkit-adapter-ethers5': patch +'@reown/appkit-adapter-polkadot': patch +'@reown/appkit-adapter-solana': patch +'@reown/appkit-adapter-wagmi': patch +'@reown/appkit': patch +'@reown/appkit-utils': patch +'@reown/appkit-cdn': patch +'@reown/appkit-common': patch +'@reown/appkit-ethers': patch +'@reown/appkit-ethers5': patch +'@reown/appkit-polyfills': patch +'@reown/appkit-siwe': patch +'@reown/appkit-solana': patch +'@reown/appkit-ui': patch +'@reown/appkit-wagmi': patch +'@reown/appkit-wallet': patch +--- + +Disable names feature flow for Solana networks diff --git a/apps/laboratory/tests/email.spec.ts b/apps/laboratory/tests/email.spec.ts index 635acd3190..05f5bcbd48 100644 --- a/apps/laboratory/tests/email.spec.ts +++ b/apps/laboratory/tests/email.spec.ts @@ -89,6 +89,12 @@ emailTest('it should switch network and sign', async ({ library }) => { await validator.expectAcceptedSign() }) +emailTest('it should show names feature only for EVM networks', async ({ library }) => { + await page.goToSettings() + await validator.expectNamesFeatureVisible(library !== 'solana') + await page.closeModal() +}) + emailTest('it should show loading on page refresh', async () => { await page.page.reload() await validator.expectConnectButtonLoading() diff --git a/apps/laboratory/tests/shared/validators/ModalWalletValidator.ts b/apps/laboratory/tests/shared/validators/ModalWalletValidator.ts index b9a93e1383..2bcd8cc558 100644 --- a/apps/laboratory/tests/shared/validators/ModalWalletValidator.ts +++ b/apps/laboratory/tests/shared/validators/ModalWalletValidator.ts @@ -55,4 +55,13 @@ export class ModalWalletValidator extends ModalValidator { `${chainName} should be visible on approve transaction page` ).toBeTruthy() } + + async expectNamesFeatureVisible(visible: boolean) { + const namesFeature = this.page.getByTestId('account-choose-name-button') + if (visible) { + await expect(namesFeature, 'Names feature should be present').toBeVisible() + } else { + await expect(namesFeature, 'Names feature should not be present').toBeHidden() + } + } } diff --git a/packages/core/src/controllers/NetworkController.ts b/packages/core/src/controllers/NetworkController.ts index cf614c4483..e9d89054c6 100644 --- a/packages/core/src/controllers/NetworkController.ts +++ b/packages/core/src/controllers/NetworkController.ts @@ -250,6 +250,15 @@ export const NetworkController = { return Boolean(smartAccountEnabledNetworks?.includes(Number(networkId))) }, + checkIfNamesSupported() { + const activeCaipNetwork = ChainController.state.activeCaipNetwork + + return ( + activeCaipNetwork?.chainNamespace && + ConstantsUtil.NAMES_SUPPORTED_CHAIN_NAMESPACES.includes(activeCaipNetwork.chainNamespace) + ) + }, + resetNetwork() { const chain = ChainController.state.activeChain diff --git a/packages/core/src/utils/ConstantsUtil.ts b/packages/core/src/utils/ConstantsUtil.ts index eebbf87fd4..5ba15f0b35 100644 --- a/packages/core/src/utils/ConstantsUtil.ts +++ b/packages/core/src/utils/ConstantsUtil.ts @@ -195,6 +195,8 @@ export const ConstantsUtil = { 'eip155:1313161554' ], + NAMES_SUPPORTED_CHAIN_NAMESPACES: ['eip155'] as ChainNamespace[], + NATIVE_TOKEN_ADDRESS: { eip155: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', solana: 'So11111111111111111111111111111111111111111', diff --git a/packages/core/tests/controllers/NetworkController.test.ts b/packages/core/tests/controllers/NetworkController.test.ts index ee0874713d..cb3b3bcc24 100644 --- a/packages/core/tests/controllers/NetworkController.test.ts +++ b/packages/core/tests/controllers/NetworkController.test.ts @@ -134,6 +134,14 @@ describe('NetworkController', () => { }) }) + it('should check if network supports names feature', () => { + NetworkController.resetNetwork() + NetworkController.setActiveCaipNetwork(caipNetwork) + expect(NetworkController.checkIfNamesSupported()).toEqual(true) + NetworkController.setActiveCaipNetwork(solanaCaipNetwork) + expect(NetworkController.checkIfNamesSupported()).toEqual(false) + }) + it('should get correct active network token address', () => { let mock = vi .spyOn(ChainController.state, 'activeCaipNetwork', 'get') @@ -152,6 +160,6 @@ describe('NetworkController', () => { 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp:So11111111111111111111111111111111111111111' ) - mock.mockClear() + mock.mockRestore() }) }) diff --git a/packages/scaffold-ui/src/views/w3m-account-settings-view/index.ts b/packages/scaffold-ui/src/views/w3m-account-settings-view/index.ts index f78030200b..154eb63e1e 100644 --- a/packages/scaffold-ui/src/views/w3m-account-settings-view/index.ts +++ b/packages/scaffold-ui/src/views/w3m-account-settings-view/index.ts @@ -155,7 +155,8 @@ export class W3mAccountSettingsView extends LitElement { private chooseNameButtonTemplate() { const type = StorageUtil.getConnectedConnector() const authConnector = ConnectorController.getAuthConnector() - if (!authConnector || type !== 'AUTH' || this.profileName) { + const hasNetworkSupport = NetworkController.checkIfNamesSupported() + if (!hasNetworkSupport || !authConnector || type !== 'AUTH' || this.profileName) { return null }