import { DisconnectOutlined } from '@ant-design/icons' import { useWeb3React } from '@web3-react/core' import { Button, Checkbox, Image, Popover, Typography } from 'antd' import { useEffect, useState } from 'react' import metamaskGif from '../../assets/gifs/metamask_disconnect.gif' import { isWalletConnectWallet, readDeactivatedWallets, readHideDisconnectPopup, readWallets, storeDeactivatedWallets, storeHideDisconnectPopup, storeWallets, } from '../../services/localStorage' const { Text } = Typography export const removeFromActiveWallets = (address: string | null | undefined) => { if (!address) return const lowerCaseAddress = address.toLowerCase() const wallets = readWallets() const filteredWallets = wallets.filter((address) => address !== lowerCaseAddress) storeWallets(filteredWallets) } export const addToDeactivatedWallets = (address: string | null | undefined) => { if (!address) return const lowerCaseAddress = address.toLowerCase() const deactivatedWallets = readDeactivatedWallets() deactivatedWallets.push(lowerCaseAddress) storeDeactivatedWallets(deactivatedWallets) } type DisconnectButtonPropType = { style?: React.CSSProperties className?: string size?: 'large' | 'middle' | 'small' } function DisconnectButton({ style, className, size = 'middle' }: DisconnectButtonPropType) { const { deactivate, account, library } = useWeb3React() const [hideDisconnectPopup] = useState(readHideDisconnectPopup()) const [walletIdentifier, setWalletIdentifier] = useState('Wallet') const [isWalletConnectAccount, setIsWalletConnectAccount] = useState( isWalletConnectWallet(account!), ) const handleDisconnect = () => { removeFromActiveWallets(account) addToDeactivatedWallets(account) deactivate() } const handleHideDisconnectPopup = (event: any) => { storeHideDisconnectPopup(event.target.checked) } useEffect(() => { setIsWalletConnectAccount(isWalletConnectWallet(account!)) }, [account]) useEffect(() => { if (!account) return library .lookupAddress(account) .then((name: string) => { if (!name) return setWalletIdentifier(`${account.substr(0, 4)}...`) setWalletIdentifier(name) }) .catch((e: unknown) => setWalletIdentifier(`${account.substr(0, 4)}...`)) }, [library, account]) const infoContent = ( <> In order to fully disconnect your wallet and to withdraw all given permissions, please open your wallet.
Understood, don't show again! ) if (hideDisconnectPopup || isWalletConnectAccount) { return ( <> ) } else { return ( <> ) } } export default DisconnectButton