From 5494d7b17bd13472c0629bc6b4a850fb5f29a007 Mon Sep 17 00:00:00 2001 From: Glitch Date: Tue, 2 Jul 2024 20:47:05 -0300 Subject: [PATCH 1/4] update chain on network change --- packages/solana/src/client.ts | 19 ++++++++++++++----- packages/solana/src/utils/chains.ts | 2 ++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/solana/src/client.ts b/packages/solana/src/client.ts index 81959a2b5c..96c2d8288d 100644 --- a/packages/solana/src/client.ts +++ b/packages/solana/src/client.ts @@ -32,6 +32,7 @@ import type { import type { Chain as AvailableChain } from '@web3modal/common' import type { Chain, Provider, ProviderType, SolStoreUtilState } from './utils/scaffold/index.js' +import { ALL_SOLANA_CHAINS } from './utils/chains.js' export interface Web3ModalClientOptions extends Omit { solanaConfig: ProviderType @@ -244,11 +245,19 @@ export class Web3Modal extends Web3ModalScaffold { this.syncNetwork(chainImages) }) - NetworkController.subscribeKey('caipNetwork', () => { - if (NetworkController.state.caipNetwork && !SolStoreUtil.state.isConnected) { - SolStoreUtil.setCaipChainId(`solana:${chain.chainId}`) - SolStoreUtil.setCurrentChain(chain) - localStorage.setItem(SolConstantsUtil.CAIP_CHAIN_ID, `solana:${chain.chainId}`) + NetworkController.subscribeKey('caipNetwork', (newCaipChain: CaipNetwork | undefined) => { + const newChain = ALL_SOLANA_CHAINS.find( + _chain => _chain.chainId === newCaipChain?.id.split(':')[1] + ) + + if (!newChain) { + throw new Error('The selected chain is not a valid Solana chain') + } + + if (NetworkController.state.caipNetwork && !SolStoreUtil.state.isConnected && newChain) { + SolStoreUtil.setCaipChainId(`solana:${newChain.chainId}`) + SolStoreUtil.setCurrentChain(newChain) + localStorage.setItem(SolConstantsUtil.CAIP_CHAIN_ID, `solana:${newChain.chainId}`) ApiController.reFetchWallets() } }) diff --git a/packages/solana/src/utils/chains.ts b/packages/solana/src/utils/chains.ts index 82e1d1227a..8006047c89 100644 --- a/packages/solana/src/utils/chains.ts +++ b/packages/solana/src/utils/chains.ts @@ -26,3 +26,5 @@ export const solanaDevnet = { rpcUrl: 'https://api.devnet.solana.com', chain: ConstantsUtil.CHAIN.SOLANA } + +export const ALL_SOLANA_CHAINS = [solana, solanaTestnet, solanaDevnet] From b1fc1f24b52c2be414d0d890bfc4d02224b63f31 Mon Sep 17 00:00:00 2001 From: Glitch Date: Tue, 2 Jul 2024 20:49:43 -0300 Subject: [PATCH 2/4] use config chains --- packages/solana/src/client.ts | 5 +---- packages/solana/src/utils/chains.ts | 2 -- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/solana/src/client.ts b/packages/solana/src/client.ts index 96c2d8288d..31ea5066df 100644 --- a/packages/solana/src/client.ts +++ b/packages/solana/src/client.ts @@ -32,7 +32,6 @@ import type { import type { Chain as AvailableChain } from '@web3modal/common' import type { Chain, Provider, ProviderType, SolStoreUtilState } from './utils/scaffold/index.js' -import { ALL_SOLANA_CHAINS } from './utils/chains.js' export interface Web3ModalClientOptions extends Omit { solanaConfig: ProviderType @@ -246,9 +245,7 @@ export class Web3Modal extends Web3ModalScaffold { }) NetworkController.subscribeKey('caipNetwork', (newCaipChain: CaipNetwork | undefined) => { - const newChain = ALL_SOLANA_CHAINS.find( - _chain => _chain.chainId === newCaipChain?.id.split(':')[1] - ) + const newChain = chains.find(_chain => _chain.chainId === newCaipChain?.id.split(':')[1]) if (!newChain) { throw new Error('The selected chain is not a valid Solana chain') diff --git a/packages/solana/src/utils/chains.ts b/packages/solana/src/utils/chains.ts index 8006047c89..82e1d1227a 100644 --- a/packages/solana/src/utils/chains.ts +++ b/packages/solana/src/utils/chains.ts @@ -26,5 +26,3 @@ export const solanaDevnet = { rpcUrl: 'https://api.devnet.solana.com', chain: ConstantsUtil.CHAIN.SOLANA } - -export const ALL_SOLANA_CHAINS = [solana, solanaTestnet, solanaDevnet] From 7717a3fa6b50cddc5eb183dd5c824a51cf8d0278 Mon Sep 17 00:00:00 2001 From: Glitch Date: Tue, 2 Jul 2024 20:55:47 -0300 Subject: [PATCH 3/4] remove new networj from conditional --- packages/solana/src/client.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/solana/src/client.ts b/packages/solana/src/client.ts index 31ea5066df..ace576769b 100644 --- a/packages/solana/src/client.ts +++ b/packages/solana/src/client.ts @@ -251,7 +251,7 @@ export class Web3Modal extends Web3ModalScaffold { throw new Error('The selected chain is not a valid Solana chain') } - if (NetworkController.state.caipNetwork && !SolStoreUtil.state.isConnected && newChain) { + if (NetworkController.state.caipNetwork && !SolStoreUtil.state.isConnected) { SolStoreUtil.setCaipChainId(`solana:${newChain.chainId}`) SolStoreUtil.setCurrentChain(newChain) localStorage.setItem(SolConstantsUtil.CAIP_CHAIN_ID, `solana:${newChain.chainId}`) From 6990c24936777100cc5fbc5ebd331eea207fdf04 Mon Sep 17 00:00:00 2001 From: tomiir Date: Wed, 10 Jul 2024 11:56:39 -0600 Subject: [PATCH 4/4] chore: update naming to be more consistent --- packages/solana/src/client.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/solana/src/client.ts b/packages/solana/src/client.ts index 66bf9b6320..b8bc987e67 100644 --- a/packages/solana/src/client.ts +++ b/packages/solana/src/client.ts @@ -247,8 +247,8 @@ export class Web3Modal extends Web3ModalScaffold { this.syncNetwork(chainImages) }) - NetworkController.subscribeKey('caipNetwork', (newCaipChain: CaipNetwork | undefined) => { - const newChain = chains.find(_chain => _chain.chainId === newCaipChain?.id.split(':')[1]) + NetworkController.subscribeKey('caipNetwork', (newCaipNetwork: CaipNetwork | undefined) => { + const newChain = chains.find(_chain => _chain.chainId === newCaipNetwork?.id.split(':')[1]) if (!newChain) { throw new Error('The selected chain is not a valid Solana chain')