gaialive's picture
Upload 109 files
65bffa4 verified
import React, { useState } from 'react';
import { Link } from 'react-router-dom';
import '../styles/Header.css';
import logo from '../assets/GXS-BlueCarbon5-logo.png';
function Header() {
const [account, setAccount] = useState(null);
const [showModal, setShowModal] = useState(false); // state untuk kontrol modal
const connectWallet = async () => {
console.log('Tombol Connect Wallet di-click!');
if (typeof window.ethereum !== 'undefined') {
try {
const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
setAccount(accounts[0]);
console.log('Connected account:', accounts[0]);
} catch (error) {
console.error('Error connecting wallet:', error);
}
} else {
alert('MetaMask not found. Please install it!');
}
};
const disconnectWallet = () => {
setAccount(null); // Reset account ke null
setShowModal(false); // Menutup modal setelah disconnect
console.log('Wallet disconnected');
};
const openModal = () => {
setShowModal(true); // Menampilkan modal saat wallet address di-click
};
const closeModal = () => {
setShowModal(false); // Menutup modal jika cancel
};
return (
<header className="header">
<div className="header-content">
<div className="logo">
<Link to="/">
<img src={logo} alt="ocarbn Logo" />
</Link>
</div>
<nav>
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/project">Project</Link></li>
<li><Link to="/about">About Us</Link></li>
</ul>
</nav>
<div>
{account ? (
<div>
<span className="wallet-address" onClick={openModal}>
{`${account.slice(0, 6)}...${account.slice(-4)}`}
</span>
{showModal && (
<div className="overlay">
<div className="modal">
<h2>Disconnect Wallet</h2>
<p>Are you sure you want to disconnect?</p>
<div className="modal-buttons">
<button className="modal-confirm" onClick={disconnectWallet}>Yes, Disconnect</button>
<button className="modal-cancel" onClick={closeModal}>Cancel</button>
</div>
</div>
</div>
)}
</div>
) : (
<button className="connect-wallet" onClick={connectWallet}>
Connect Wallet
</button>
)}
</div>
</div>
</header>
);
}
export default Header;