import { useCallback, useState } from 'react' import { ArrowDownTrayIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpTrayIcon, ExclamationTriangleIcon, UsersIcon, } from '@heroicons/react/20/solid' import { useWallet } from '@solana/wallet-adapter-react' import { useTranslation } from 'next-i18next' import WalletIcon from './icons/WalletIcon' import Button, { IconButton } from './shared/Button' import ConnectedMenu from './wallet/ConnectedMenu' import { ConnectWalletButton } from './wallet/ConnectWalletButton' import { IS_ONBOARDED_KEY } from '../utils/constants' import useLocalStorageState from '../hooks/useLocalStorageState' import CreateAccountModal from './modals/CreateAccountModal' import MangoAccountsListModal from './modals/MangoAccountsListModal' import { useRouter } from 'next/router' import UserSetup from './UserSetup' import SolanaTps from './SolanaTps' import useMangoAccount from 'hooks/useMangoAccount' import useOnlineStatus from 'hooks/useOnlineStatus' import { DEFAULT_DELEGATE } from './modals/DelegateModal' import Tooltip from './shared/Tooltip' import { abbreviateAddress } from 'utils/formatting' import DepositWithdrawModal from './modals/DepositWithdrawModal' // import ThemeSwitcher from './ThemeSwitcher' const TopBar = () => { const { t } = useTranslation('common') const { mangoAccount } = useMangoAccount() const { connected } = useWallet() const [isOnboarded, setIsOnboarded] = useLocalStorageState(IS_ONBOARDED_KEY) const [showUserSetup, setShowUserSetup] = useState(false) const [action, setAction] = useState<'deposit' | 'withdraw'>('deposit') const [showCreateAccountModal, setShowCreateAccountModal] = useState(false) const [showMangoAccountsModal, setShowMangoAccountsModal] = useState(false) const [showDepositWithdrawModal, setShowDepositWithdrawModal] = useState(false) const isOnline = useOnlineStatus() const router = useRouter() const { query } = router const handleCloseSetup = useCallback(() => { setShowUserSetup(false) setIsOnboarded(true) }, [setShowUserSetup, setIsOnboarded]) const handleShowSetup = useCallback(() => { setShowUserSetup(true) }, []) const handleShowAccounts = useCallback(() => { if (mangoAccount) { setShowMangoAccountsModal(true) } else { setShowCreateAccountModal(true) } }, [mangoAccount]) const handleDepositWithdrawModal = (action: 'deposit' | 'withdraw') => { if (!connected || mangoAccount) { setAction(action) setShowDepositWithdrawModal(true) } else { setShowCreateAccountModal(true) } } return ( <>
{query.token ? (
router.back()} hideBg size="small">
) : null} {connected ? (
) : null} next {!connected ? ( {t('connect-helper')} ) : null}
{!isOnline ? (

Your connection appears to be offline

) : null}
{/*
*/}
handleDepositWithdrawModal('deposit')}> handleDepositWithdrawModal('withdraw')}>
{connected ? (
) : isOnboarded ? ( ) : ( )}
{showDepositWithdrawModal ? ( setShowDepositWithdrawModal(false)} /> ) : null} {showMangoAccountsModal ? ( setShowMangoAccountsModal(false)} /> ) : null} {showUserSetup ? : null} {showCreateAccountModal ? ( setShowCreateAccountModal(false)} /> ) : null} ) } export default TopBar