11import React from "react" ;
22import styled from "styled-components" ;
3- import { useToggle } from "react-use" ;
4- import { useAccount , useNetwork } from "wagmi" ;
3+ import { useAccount , useNetwork , useSwitchNetwork } from "wagmi" ;
54import { useWeb3Modal } from "@web3modal/react" ;
65import { shortenAddress } from "utils/shortenAddress" ;
76import { Button } from "@kleros/ui-components-library" ;
8- import { SUPPORTED_CHAINIDS } from "consts/chains" ;
9- import SwitchChainModal from "./SwitchChainModal" ;
7+ import { SUPPORTED_CHAINS , DEFAULT_CHAIN } from "consts/chains" ;
108
119const StyledContainer = styled . div `
1210 width: fit-content;
@@ -29,11 +27,6 @@ const StyledContainer = styled.div`
2927 }
3028` ;
3129
32- const StyledSwitchChainButton = styled ( Button ) `
33- width: fit-content;
34- height: 34px;
35- ` ;
36-
3730const AccountDisplay : React . FC = ( ) => {
3831 return (
3932 < StyledContainer >
@@ -54,20 +47,33 @@ export const AddressDisplay: React.FC = () => {
5447} ;
5548
5649export const SwitchChainButton : React . FC = ( ) => {
57- const [ isSwitchChainModalOpen , toggleIsSwitchChainModalOpen ] = useToggle ( false ) ;
50+ const { switchNetwork, isLoading } = useSwitchNetwork ( ) ;
51+ const handleSwitch = ( ) => {
52+ if ( ! switchNetwork ) {
53+ console . error ( "Cannot switch network. Please do it manually." ) ;
54+ return ;
55+ }
56+ try {
57+ switchNetwork ( DEFAULT_CHAIN ) ;
58+ } catch ( err ) {
59+ console . error ( err ) ;
60+ }
61+ } ;
5862 return (
59- < >
60- < StyledSwitchChainButton text = { `Switch chain` } onClick = { toggleIsSwitchChainModalOpen } />
61- { isSwitchChainModalOpen && < SwitchChainModal toggle = { toggleIsSwitchChainModalOpen } /> }
62- </ >
63+ < Button
64+ isLoading = { isLoading }
65+ disabled = { isLoading }
66+ text = { `Switch to ${ SUPPORTED_CHAINS [ DEFAULT_CHAIN ] . chainName } ` }
67+ onClick = { handleSwitch }
68+ />
6369 ) ;
6470} ;
6571
6672const ConnectButton : React . FC = ( ) => {
6773 const { chain } = useNetwork ( ) ;
6874 const { open, isOpen } = useWeb3Modal ( ) ;
6975 return chain ? (
70- ! SUPPORTED_CHAINIDS . includes ( chain . id ) ? (
76+ chain ? .id !== DEFAULT_CHAIN ? (
7177 < SwitchChainButton />
7278 ) : (
7379 < AccountDisplay />
0 commit comments