Skip to content

Commit 6b00bb6

Browse files
committed
fix: address AI review - resolve runtime errors, fix i18n typo, and dynamic icon mapping
1 parent 2d95348 commit 6b00bb6

3 files changed

Lines changed: 351 additions & 226 deletions

File tree

components/header/header.tsx

Lines changed: 37 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,47 @@
11
'use client'
22

3-
import { useMemo, useState } from 'react'
3+
import { useEffect, useState } from 'react'
44
import Image from 'next/image'
5-
import { useAccount, useDisconnect } from 'wagmi'
5+
import { useAccount, useChainId, useConnect } from 'wagmi'
66
import { truncateAddress } from '@/utils/truncate'
77
import { 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

Comments
 (0)