11'use client'
22
3- import { useMemo , useState } from 'react'
3+ import { useEffect , useState } from 'react'
44import Image from 'next/image'
5- import { useAccount , useDisconnect } from 'wagmi'
5+ import { useAccount , useChainId , useConnect } from 'wagmi'
66import { truncateAddress } from '@/utils/truncate'
77import { NetworkSwitchModal } from '@/components/modals/network-switch-modal'
8- import { chainsMap } from '@/utils/networksConfig'
9- import { useBridgeStatus } from '@/hooks/use-bridge-status'
10- import useAppStore from '@/store/app'
11- import { setIsModalOpen } from '@/store/modal'
12- import { FiLogOut } from 'react-icons/fi'
13- import { useTariAccountStore } from '@/store/account'
14- import { ConnectWalletButton } from '../connect-wallet-button'
8+ import { supportedChains , chainsMap } from '@/utils/networksConfig'
9+ import { HeaderProps } from './header.types'
1510
16- export const Header = ( ) => {
17- const bridgeTxs = useTariAccountStore ( ( s ) => s . combinedBridgeTxs )
18- const { getSupportedChains } = useAppStore ( )
19-
20- const { isOffline } = useBridgeStatus ( )
11+ export const Header : React . FC < HeaderProps > = ( { onConnectClick } ) => {
12+ const chainId = useChainId ( )
2113 const { address, isConnected, chain } = useAccount ( )
22- const supportedChains = getSupportedChains ( )
23- const { disconnect } = useDisconnect ( )
24-
14+ const { isPending } = useConnect ( )
2515 const [ showNetworkModal , setShowNetworkModal ] = useState ( false )
2616
27- const exampleItem = bridgeTxs . find ( ( tx ) => tx . paymentId !== '' )
28- const isNetworkSupported =
29- chain !== undefined && supportedChains . some ( ( c ) => c . id === chain . id )
30- const shouldShowNetworkModal = useMemo (
31- ( ) => isConnected && ! isNetworkSupported ,
32- [ isConnected , isNetworkSupported ]
33- )
17+ const isNetworkSupported = chain !== undefined
3418
35- function networkClick ( ) {
36- if ( ! isNetworkSupported ) {
19+ useEffect ( ( ) => {
20+ if ( isConnected && ! isNetworkSupported ) {
3721 setShowNetworkModal ( true )
38- return
39- }
40- }
41- const handleConnectClick = ( ) => {
42- if ( ! isConnected ) {
43- setIsModalOpen ( true )
22+ } else {
23+ setShowNetworkModal ( false )
4424 }
45- }
25+ } , [ isConnected , isNetworkSupported ] )
4626
47- const defaultMarkup = (
48- < header className = "absolute top-8 right-8 z-50 flex items-center space-x-4" >
49- < div className = "flex flex-row items-center gap-4 " >
50- { exampleItem && (
51- < div
52- className = "w-[308px] h-[48px] cursor-pointer"
53- onClick = { handleDisplayTransaction }
27+ return (
28+ < >
29+ < header className = "absolute top-8 right-8 z-50 " >
30+ { ! isConnected && ! isPending ? (
31+ < button
32+ className = "px-8.5 py-4 bg-[#090719] text-white font-semibold text-[12px] rounded-full hover:bg-gray-800 hover: cursor-pointer transition "
33+ onClick = { onConnectClick }
5434 >
55- </ div >
56- ) }
57- < ConnectWalletButton />
58- { isConnected && (
35+ Connect Wallet
36+ </ button >
37+ ) : (
5938 < div
60- className = { `flex px-3 py-1 gap-2 h-[48px] rounded-3xl justify-center items-center ${
61- isNetworkSupported ? 'bg-white/25' : 'bg-red-400/25'
62- } `}
63- onClick = { networkClick }
39+ className = {
40+ isNetworkSupported
41+ ? 'flex p-2 rounded-lg bg-white/25 items-center'
42+ : 'flex p-2 rounded-lg bg-red-400/25 items-center'
43+ }
44+ onClick = { ( ) => ! isNetworkSupported && setShowNetworkModal ( true ) }
6445 >
6546 < div className = "w-[24px] h-[24px] rounded-full overflow-hidden relative" >
6647 < Image
@@ -71,41 +52,30 @@ export const Header = () => {
7152 className = "rounded-full object-cover"
7253 />
7354 </ div >
74- < div className = "flex flex-col gap-1" >
75- < div className = "text-[12px] leading-none font-semibold" >
55+
56+ < div className = "flex flex-col ml-2" >
57+ < div className = "text-[13px] font-semibold" >
7658 { truncateAddress ( address ?? '0x' , 15 ) }
7759 </ div >
7860 < div
79- className = { `text-[9px ] mt-[-3px] leading-none ${
61+ className = { `text-[10px ] mt-[-5px] ${
8062 ! isNetworkSupported
8163 ? 'text-red-600 font-medium hover:cursor-pointer'
8264 : ''
8365 } `}
8466 >
85- { chainsMap [ chain ?. id ] }
67+ { chainsMap [ chainId ] }
8668 { ! isNetworkSupported && ' (Click to switch)' }
8769 </ div >
8870 </ div >
89- < div
90- className = "overflow-hidden opacity-35 hover:opacity-55 hover:cursor-pointer"
91- onClick = { ( ) => disconnect ( ) }
92- >
93- < FiLogOut size = { 18 } />
94- </ div >
9571 </ div >
9672 ) }
97- </ div >
98- </ header >
99- )
100-
101- return (
102- < >
103- { ! isOffline && defaultMarkup }
73+ </ header >
10474
10575 { /* Network Switch Modal */ }
106- { shouldShowNetworkModal && showNetworkModal && (
76+ { showNetworkModal && (
10777 < NetworkSwitchModal
108- closeModalAction = { ( ) => setShowNetworkModal ( false ) }
78+ closeModal = { ( ) => setShowNetworkModal ( false ) }
10979 supportedChains = { supportedChains }
11080 />
11181 ) }
0 commit comments