Skip to content

Commit

Permalink
fix network switch
Browse files Browse the repository at this point in the history
  • Loading branch information
Tbaut committed Feb 14, 2025
1 parent 7e7367f commit b723d7b
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 10 deletions.
1 change: 0 additions & 1 deletion packages/ui/src/components/TransferAsset.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ const TransferAsset = ({
const toAddress = useMemo(() => selected?.address || '', [selected?.address])
const [selectedAsset, setSelectedAsset] = useState<Option | undefined>()

console.log('-->load')
const isNativeAssetSelected = useMemo(() => {
if (!selectedAsset || selectedAsset.id === undefined) return true

Expand Down
5 changes: 4 additions & 1 deletion packages/ui/src/components/select/NetworkSelection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
} from '../../constants'
import { theme } from '../../styles/theme'
import { useMultiProxy } from '../../contexts/MultiProxyContext'
import { useApi } from '../../contexts/ApiContext'

const NetworkSelection = () => {
const { selectedNetwork, selectNetwork } = useNetwork()
Expand All @@ -22,6 +23,7 @@ const NetworkSelection = () => {
: Object.entries(networkList).filter(([name]) => name !== 'local')
}, [])
const { resetLists } = useMultiProxy()
const { resetApi } = useApi()

const handleNetworkSelection = useCallback(
({ target: { value } }: SelectChangeEvent<unknown>) => {
Expand All @@ -31,9 +33,10 @@ const NetworkSelection = () => {
}

resetLists()
resetApi()
selectNetwork(value, true)
},
[resetLists, selectNetwork]
[resetLists, selectNetwork, resetApi]
)

const renderNetworks = useCallback(
Expand Down
13 changes: 11 additions & 2 deletions packages/ui/src/contexts/ApiContext.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React from 'react'
import React, { useCallback } from 'react'
import { useState, useEffect, createContext, useContext } from 'react'
import { useNetwork } from './NetworkContext'
import { ethereumChains } from '../utils/ethereumChains'
Expand All @@ -17,6 +17,7 @@ export type IApiContext<Id extends ApiDescriptors> = {
chainInfo?: ChainInfoHuman
client?: PolkadotClient
compatibilityToken?: CompatibilityToken
resetApi: () => void
}

export const isContextOf = <Id extends ApiDescriptors>(
Expand Down Expand Up @@ -50,6 +51,13 @@ const ApiContextProvider = <Id extends ApiDescriptors>({ children }: ApiContextP
const [compatibilityToken, setCompatibilityToken] = useState<CompatibilityToken | undefined>()
const [apiDescriptor, setApiDescriptor] = useState<IApiContext<ApiDescriptors>['apiDescriptor']>()

const resetApi = useCallback(() => {
setChainInfo(undefined)
setCompatibilityToken(undefined)
setApi(undefined)
setApiDescriptor(undefined)
}, [])

useEffect(() => {
if (!selectedNetworkInfo?.chainId || !selectedNetworkInfo?.descriptor) return

Expand Down Expand Up @@ -101,7 +109,8 @@ const ApiContextProvider = <Id extends ApiDescriptors>({ children }: ApiContextP
apiDescriptor,
chainInfo,
client,
compatibilityToken
compatibilityToken,
resetApi
}}
>
{children}
Expand Down
28 changes: 22 additions & 6 deletions packages/ui/src/contexts/MultiProxyContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import { useNetwork } from './NetworkContext'
import { useHiddenAccounts } from './HiddenAccountsContext'
import { useGetEncodedAddress } from '../hooks/useGetEncodedAddress'
import { getPubKeyFromAddress } from '../utils/getPubKeyFromAddress'
import { encodesubstrateAddress } from '../utils/encodeSubstrateAddress'
import { useApi } from './ApiContext'

interface MultisigContextProps {
children: React.ReactNode | React.ReactNode[]
Expand Down Expand Up @@ -54,6 +56,7 @@ export interface IMultisigContext {
const MultisigContext = createContext<IMultisigContext | undefined>(undefined)

const MultiProxyContextProvider = ({ children }: MultisigContextProps) => {
const { chainInfo } = useApi()
const getEncodedAddress = useGetEncodedAddress()
const { networkHiddenAccounts } = useHiddenAccounts()
const [refetchMultisigTimeoutMinutes, setRefetchMultisigTimeoutMinutes] = useState(0)
Expand All @@ -76,7 +79,7 @@ const MultiProxyContextProvider = ({ children }: MultisigContextProps) => {
const { watchedPubKeys } = useWatchedAccounts()
const { selectedNetwork } = useNetwork()
const LOCALSTORAGE_LAST_MULTIPROXY_KEY_NETWORK = useMemo(
() => selectedNetwork && `multix.lastUsedMultiProxy.${selectedNetwork}`,
() => selectedNetwork && `multix.lastUsedMultiProxy.v2.${selectedNetwork}`,
[selectedNetwork]
)

Expand Down Expand Up @@ -343,7 +346,8 @@ const MultiProxyContextProvider = ({ children }: MultisigContextProps) => {
}

if (multiProxyFound && LOCALSTORAGE_LAST_MULTIPROXY_KEY_NETWORK) {
localStorage.setItem(LOCALSTORAGE_LAST_MULTIPROXY_KEY_NETWORK, multi)
const pubKey = getPubKeyFromAddress(multi)
pubKey && localStorage.setItem(LOCALSTORAGE_LAST_MULTIPROXY_KEY_NETWORK, pubKey)
}

setAddressInUrl(multi)
Expand All @@ -358,16 +362,28 @@ const MultiProxyContextProvider = ({ children }: MultisigContextProps) => {
return undefined
}

const lastUsedMultiProxy =
const lastUsedMultiProxyPubKey =
LOCALSTORAGE_LAST_MULTIPROXY_KEY_NETWORK &&
localStorage.getItem(LOCALSTORAGE_LAST_MULTIPROXY_KEY_NETWORK)

if (lastUsedMultiProxy && getMultiProxyByAddress(lastUsedMultiProxy)) {
return lastUsedMultiProxy
if (selectedNetwork && lastUsedMultiProxyPubKey && chainInfo) {
const lastUsedAddress = encodesubstrateAddress(lastUsedMultiProxyPubKey, chainInfo.ss58Format)
const lastUsedMultiProxy = getMultiProxyByAddress(lastUsedAddress)

if (lastUsedMultiProxy) {
return lastUsedAddress
}
}

return multiProxyList?.[0].proxy || multiProxyList?.[0].multisigs[0].address
}, [LOCALSTORAGE_LAST_MULTIPROXY_KEY_NETWORK, getMultiProxyByAddress, isLoading, multiProxyList])
}, [
LOCALSTORAGE_LAST_MULTIPROXY_KEY_NETWORK,
chainInfo,
getMultiProxyByAddress,
isLoading,
multiProxyList,
selectedNetwork
])

return (
<MultisigContext.Provider
Expand Down

0 comments on commit b723d7b

Please sign in to comment.