import { Button, ButtonGroup, ButtonProps, HStack, Icon, IconButton, Image, Menu, MenuButton, MenuDivider, MenuItem, MenuItemOption, MenuList, MenuOptionGroup, Text, useColorModeValue, useDisclosure, } from "@chakra-ui/react"; import { WalletAdapterNetwork } from "@solana/wallet-adapter-base"; import { useWallet } from "@solana/wallet-adapter-react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; import { useEndpoint } from "@strata-foundation/react"; import React, { FC, MouseEvent, useCallback, useEffect } from "react"; import { BsCaretDownFill, BsFillPersonFill } from "react-icons/bs"; import { useWalletProfile } from "../hooks/useWalletProfile"; import { useUsernameFromIdentifierCertificate } from "../hooks/useUsernameFromIdentifierCertificate"; import { CreateProfileModal } from "./CreateProfileModal"; interface IProfileButton extends ButtonProps { bypassIntermediaryStage?: boolean; } export const ProfileButton: FC = ({ children = "Select Wallet", onClick, ...props }) => { const { disconnect, connected, publicKey } = useWallet(); const disconnectAndClear = useCallback(() => { disconnect(); localStorage.removeItem("lit-auth-sol-signature"); }, [disconnect]); const { visible, setVisible } = useWalletModal(); const { info: profile } = useWalletProfile(publicKey || undefined); const { username } = useUsernameFromIdentifierCertificate( profile?.identifierCertificateMint, profile?.ownerWallet ); const { isOpen, onOpen, onClose } = useDisclosure(); const handleClick = useCallback( (event: MouseEvent) => { if (onClick) onClick(event); if (!event.defaultPrevented) { if (connected) { onOpen(); } else { setVisible(!visible); } } }, [onClick, visible, setVisible, connected, onOpen] ); const { cluster, setClusterOrEndpoint } = useEndpoint(); return ( <> } /> setClusterOrEndpoint(e as string)} value={cluster} > Mainnet Devnet Localnet Disconnect ); };