From da1dbfdd719391182ea43b2b2f9cf659b1dd72f0 Mon Sep 17 00:00:00 2001 From: abefernan <44572727+abefernan@users.noreply.github.com> Date: Mon, 10 Jul 2023 17:29:01 +0200 Subject: [PATCH] Assume emptyChain has registryName --- context/ChainsContext/index.tsx | 48 ++++++++++++++++----------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/context/ChainsContext/index.tsx b/context/ChainsContext/index.tsx index 2d7f4d6..32702a4 100644 --- a/context/ChainsContext/index.tsx +++ b/context/ChainsContext/index.tsx @@ -1,7 +1,7 @@ import { ReactNode, createContext, useContext, useEffect, useReducer } from "react"; -import { setChain, setChains, setChainsError } from "./helpers"; +import { isChainInfoFilled, setChain, setChains, setChainsError } from "./helpers"; import { getChain, getChainFromRegistry, getChainItemsFromRegistry } from "./service"; -import { storeChain } from "./storage"; +import { setChainInStorage, setChainInUrl } from "./storage"; import { Action, ChainsContextType, State } from "./types"; const ChainsContext = createContext(undefined); @@ -12,7 +12,8 @@ const chainsReducer = (state: State, action: Action) => { return { ...state, chains: action.payload }; } case "setChain": { - storeChain(action.payload); + setChainInStorage(action.payload); + setChainInUrl(action.payload); return { ...state, chain: action.payload }; } case "setChainsError": { @@ -51,33 +52,30 @@ export const ChainsProvider = ({ children }: ChainsProviderProps) => { useEffect(() => { (async function getChainFromRegistryIfEmpty() { - if (!state.chain.chainId && state.chains.mainnets.length && state.chains.testnets.length) { - const chainName = - state.chain.registryName || - location.pathname.split("/")[1] || - process.env.NEXT_PUBLIC_REGISTRY_NAME || - "cosmoshub"; + if ( + isChainInfoFilled(state.chain) || + !state.chains.mainnets.length || + !state.chains.testnets.length + ) { + return; + } - const isTestnet = !!state.chains.testnets.find(({ name }) => name === chainName); + const isTestnet = !!state.chains.testnets.find( + ({ name }) => name === state.chain.registryName, + ); - try { - const chainFromRegistry = await getChainFromRegistry(chainName, isTestnet); - setChain(dispatch, chainFromRegistry); - } catch (error) { - if (error instanceof Error) { - setChainsError(dispatch, error.message); - } else { - setChainsError(dispatch, `Failed to get chain ${chainName} from registry`); - } + try { + const chainFromRegistry = await getChainFromRegistry(state.chain.registryName, isTestnet); + setChain(dispatch, chainFromRegistry); + } catch (error) { + if (error instanceof Error) { + setChainsError(dispatch, error.message); + } else { + setChainsError(dispatch, `Failed to get chain ${state.chain.registryName} from registry`); } } })(); - }, [ - state.chain.chainId, - state.chain.registryName, - state.chains.mainnets.length, - state.chains.testnets, - ]); + }, [state.chain, state.chains.mainnets.length, state.chains.testnets]); return {children}; };