make network change based on the url params on the first render

Signed-off-by: Uncle Fatso <uncle.fatso@ghostchain.io>
This commit is contained in:
Uncle Fatso 2026-04-07 21:01:30 +03:00
parent 6acd4e92e2
commit a4b801efee
Signed by: f4ts0
GPG Key ID: 565F4F2860226EBB
4 changed files with 30 additions and 17 deletions

View File

@ -1,7 +1,7 @@
{
"name": "ghost-dao-interface",
"private": true,
"version": "0.7.3",
"version": "0.7.4",
"type": "module",
"scripts": {
"dev": "vite",

View File

@ -160,7 +160,7 @@ function App() {
setWrongNetworkToastId(null);
}
}
}, [chainId, addressChainId, isConnected])
}, [chainId, addressChainId, isConnected, wrongNetworkToastId])
useEffect(() => {
if (errorMessage) {

View File

@ -12,8 +12,8 @@ import { isNetworkAvailable } from "../../constants";
import { parseKnownToken } from "../../components/Token/Token";
import { useSwitchChain } from 'wagmi';
import toast from "react-hot-toast";
import { useNavigate, useLocation } from 'react-router-dom';
import toast from "react-hot-toast";
function SelectNetwork({ chainId, wrongNetworkToastId, setWrongNetworkToastId, small }) {
const theme = useTheme();
@ -25,29 +25,43 @@ function SelectNetwork({ chainId, wrongNetworkToastId, setWrongNetworkToastId, s
const [networkId, setNetworkId] = useState(chainId);
useEffect(() => {
if (chainId !== networkId) setNetworkId(chainId);
}, [chainId])
useEffect(() => {
const chainName = chains.find((chain) => chain.id === chainId).name;
const parts = pathname.split('/');
if (parts.length > 2) {
parts[1] = chainName.toLowerCase();
const newPath = parts.join("/");
navigate(newPath);
let targetChain = chains.at(0);
const chainName = parts[1].toLowerCase();
const chain = chains.find(chain => chain.name.toLowerCase() === chainName);
if (chain && targetChain.name !== chain.name) {
targetChain = chain;
}
changeNetworkId(targetChain.name, targetChain.id)
}
}, [chains, chainId])
}, [])
const handleChange = (event) => {
const chainName = chains.find((chain) => chain.id === event.target.value).name;
useEffect(() => {
if (chainId !== networkId) setNetworkId(chainId);
}, [chainId, networkId])
const changeNetworkId = (chainName, newNetworkId) => {
toast.dismiss(wrongNetworkToastId);
const toastId = toast.loading(`Trying to connect to ${chainName} network... Wait please`, {
position: 'bottom-right'
});
setWrongNetworkToastId(toastId);
setNetworkId(event.target.value);
switchChain({ chainId: event.target.value });
setNetworkId(newNetworkId);
switchChain({ chainId: newNetworkId });
}
const handleChange = (event) => {
const chainName = chains.find((chain) => chain.id === event.target.value).name;
changeNetworkId(chainName, event.target.value);
const parts = pathname.split('/');
if (parts.length > 2) {
parts[1] = chainName.toLowerCase();
const newPath = parts.join("/");
navigate(newPath, { replace: true });
}
}
return(

View File

@ -31,7 +31,6 @@ export default function NotFound({
});
setWrongNetworkToastId(toastId);
setNetworkId(newChainId);
switchChain({ chainId: newChainId });
}