'use client'; import { useAuth } from '@/hooks/useAuth'; import { useCUSDBalance } from '@/hooks/useCUSDBalance'; import { useWalletConnection } from '@/hooks/useWalletConnection'; import { formatAddress } from '@/lib/celo'; import { useState } from 'react'; import { NetworkSwitchModal } from '../modals/NetworkSwitchModal'; export function WalletButton() { const { address, isConnected, isConnecting, connect, disconnect, chainId } = useWalletConnection(); const { authenticate, isAuthenticating, clearAuth, isAuthenticated } = useAuth(); const { data: balance } = useCUSDBalance(address); const [showNetworkModal, setShowNetworkModal] = useState(false); const expectedChainId = parseInt(process.env.NEXT_PUBLIC_CHAIN_ID || '11142220'); const isWrongNetwork = isConnected && chainId !== expectedChainId; const handleConnect = async () => { try { // Step 1: Connect wallet await connect(); // Step 2: Authenticate await authenticate(); } catch (error) { console.error('Connection/Authentication error:', error); } }; const handleDisconnect = () => { // Clear authentication data clearAuth(); // Disconnect wallet disconnect(); }; // Show "Re-authenticate" button if connected but not authenticated if (isConnected && address && !isAuthenticated && !isWrongNetwork) { return ( ); } if (isWrongNetwork) { return ( <> setShowNetworkModal(false)} /> ); } if (isConnected && address) { return (
{/* Balance */}
{parseFloat(balance || '0').toFixed(2)} cUSD
{/* Address */}
{formatAddress(address)}
{/* Disconnect */}
); } return ( ); }