import { ConnectButton as RainbowConnectButton } from "@rainbow-me/rainbowkit" import { useGetUserSites } from "~/queries/site" import { useAccount, useDisconnect, useBalance } from "wagmi" import { Avatar } from "~/components/ui/Avatar" import { Button } from "~/components/ui/Button" import type { HeaderLinkType } from "~/components/site/SiteHeader" import { DashboardIcon } from "../icons/DashboardIcon" import { UniLink } from "../ui/UniLink" import { useEffect, useState } from "react" import { DuplicateIcon, LogoutIcon } from "@heroicons/react/outline" import { BigNumber } from "ethers" import { SITE_URL } from "~/lib/env" export const ConnectButton: React.FC<{ left?: boolean variant?: "text" | "primary" | "secondary" | "like" | "collect" | "crossbell" }> = ({ left, variant }) => { const { address } = useAccount() const userSites = useGetUserSites(address) const { disconnect } = useDisconnect() const [copyLabel, setCopyLabel] = useState("") useEffect(() => { if (address) { setCopyLabel(address?.slice(0, 5) + "..." + address?.slice(-4)) } }, [address]) const dropdownLinks: HeaderLinkType[] = [ { icon: , label: copyLabel, onClick() { navigator.clipboard.writeText(address || "") setCopyLabel("Copied!") setTimeout(() => { setCopyLabel(address?.slice(0, 5) + "..." + address?.slice(-4)) }, 1000) }, }, { icon: , label: "Writer dashboard", url: `${SITE_URL}/dashboard`, }, { icon: , label: "Disconnect", onClick() { disconnect() }, }, ] const { data: balance } = useBalance({ addressOrName: address, }) const [InsufficientBalance, setInsufficientBalance] = useState(false) useEffect(() => { if (balance !== undefined) { if ( balance.value.gt(BigNumber.from("1" + "0".repeat(balance.decimals - 2))) ) { setInsufficientBalance(false) } else { setInsufficientBalance(true) } } }, [balance]) return ( {({ account, chain, openAccountModal, openChainModal, openConnectModal, mounted, }) => { return (
{(() => { if (!mounted || !account || !chain) { return ( ) } return (
{userSites.isSuccess ? ( <> ) : ( "" )}
) })()}
) }}
) }