Commit 0e4d9de6 authored by Max Alekseenko's avatar Max Alekseenko

add tooltip for wallet connect button

parent 4e306451
import type { ButtonProps } from '@chakra-ui/react'; import type { ButtonProps } from '@chakra-ui/react';
import { Popover, PopoverContent, PopoverBody, PopoverTrigger, Button, useColorModeValue, Box, useBoolean } from '@chakra-ui/react'; import { Popover, PopoverContent, PopoverBody, PopoverTrigger, Button, useColorModeValue, Box, useBoolean, Tooltip } from '@chakra-ui/react';
import React from 'react'; import React from 'react';
import AddressIdenticon from 'ui/shared/entities/address/AddressIdenticon'; import AddressIdenticon from 'ui/shared/entities/address/AddressIdenticon';
...@@ -14,6 +14,15 @@ type Props = { ...@@ -14,6 +14,15 @@ type Props = {
const WalletMenuDesktop = ({ isHomePage }: Props) => { const WalletMenuDesktop = ({ isHomePage }: Props) => {
const { isWalletConnected, address, connect, disconnect, isModalOpening, isModalOpen } = useWallet(); const { isWalletConnected, address, connect, disconnect, isModalOpening, isModalOpen } = useWallet();
const [ isPopoverOpen, setIsPopoverOpen ] = useBoolean(false); const [ isPopoverOpen, setIsPopoverOpen ] = useBoolean(false);
const [ isTooltipShown, setIsTooltipShown ] = useBoolean(false);
React.useEffect(() => {
const wasShown = window.localStorage.getItem('wallet-connect-tooltip-shown');
if (!wasShown) {
setIsTooltipShown.on();
window.localStorage.setItem('wallet-connect-tooltip-shown', 'true');
}
}, [ setIsTooltipShown ]);
const variant = React.useMemo(() => { const variant = React.useMemo(() => {
if (isWalletConnected) { if (isWalletConnected) {
...@@ -54,28 +63,39 @@ const WalletMenuDesktop = ({ isHomePage }: Props) => { ...@@ -54,28 +63,39 @@ const WalletMenuDesktop = ({ isHomePage }: Props) => {
isOpen={ isPopoverOpen } isOpen={ isPopoverOpen }
onClose={ setIsPopoverOpen.off } onClose={ setIsPopoverOpen.off }
> >
<PopoverTrigger> <Tooltip
<Button label={ <span>Your wallet is used to interact with<br/>apps and contracts in the explorer</span> }
variant={ variant } textAlign="center"
colorScheme="blue" padding={ 2 }
flexShrink={ 0 } isDisabled={ isWalletConnected }
isLoading={ isModalOpening || isModalOpen } openDelay={ 300 }
loadingText="Connect wallet" isOpen={ isTooltipShown || undefined }
onClick={ isWalletConnected ? setIsPopoverOpen.on : connect } onClose={ setIsTooltipShown.off }
ml={ 3 } >
fontSize="sm" <Box ml={ 3 }>
{ ...buttonStyles } <PopoverTrigger>
> <Button
{ isWalletConnected ? ( variant={ variant }
<> colorScheme="blue"
<Box mr={ 2 }> flexShrink={ 0 }
<AddressIdenticon size={ 20 } hash={ address }/> isLoading={ isModalOpening || isModalOpen }
</Box> loadingText="Connect wallet"
<HashStringShorten hash={ address } isTooltipDisabled/> onClick={ isWalletConnected ? setIsPopoverOpen.on : connect }
</> fontSize="sm"
) : 'Connect wallet' } { ...buttonStyles }
</Button> >
</PopoverTrigger> { isWalletConnected ? (
<>
<Box mr={ 2 }>
<AddressIdenticon size={ 20 } hash={ address }/>
</Box>
<HashStringShorten hash={ address } isTooltipDisabled/>
</>
) : 'Connect wallet' }
</Button>
</PopoverTrigger>
</Box>
</Tooltip>
{ isWalletConnected && ( { isWalletConnected && (
<PopoverContent w="235px"> <PopoverContent w="235px">
<PopoverBody padding="24px 16px 16px 16px"> <PopoverBody padding="24px 16px 16px 16px">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment