import ContentCopyRounded from '@mui/icons-material/ContentCopyRounded' import MoreHoriz from '@mui/icons-material/MoreHoriz' import OpenInNewRounded from '@mui/icons-material/OpenInNewRounded' import { ListItemAvatar, ListItemText, MenuItem } from '@mui/material' import { useId, useState } from 'react' import { useTranslation } from 'react-i18next' import { AccountAvatar } from '../../components/Avatar/AccountAvatar.js' import { ListItem } from '../../components/ListItem/ListItem.js' import { ListItemButton } from '../../components/ListItem/ListItemButton.js' import { Menu } from '../../components/Menu.js' import { useExplorer } from '../../hooks/useExplorer.js' import { useHeader } from '../../hooks/useHeader.js' import { useNavigateBack } from '../../hooks/useNavigateBack.js' import { useToAddressRequirements } from '../../hooks/useToAddressRequirements.js' import { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js' import { useBookmarkActions } from '../../stores/bookmarks/useBookmarkActions.js' import { useFieldActions } from '../../stores/form/useFieldActions.js' import type { ToAddress } from '../../types/widget.js' import { defaultChainIdsByType } from '../../utils/chainType.js' import { shortenAddress } from '../../utils/wallet.js' import { ListContainer, OptionsMenuButton, SendToWalletPageContainer, } from './SendToWalletPage.style.js' export const SendToConfiguredWalletPage = () => { const { t } = useTranslation() const { navigateBack } = useNavigateBack() const { toAddresses } = useWidgetConfig() const [selectedToAddress, setSelectedToAddress] = useState() const { requiredToChainType } = useToAddressRequirements() const { setSelectedBookmark } = useBookmarkActions() const { setFieldValue } = useFieldActions() const moreMenuId = useId() const [moreMenuAnchorEl, setMenuAnchorEl] = useState() const open = Boolean(moreMenuAnchorEl) const { getAddressLink } = useExplorer() useHeader(t('header.sendToWallet')) const handleCuratedSelected = (toAddress: ToAddress) => { setSelectedBookmark(toAddress) setFieldValue('toAddress', toAddress.address, { isTouched: true, isDirty: true, }) navigateBack() } const closeMenu = () => { setMenuAnchorEl(null) } const handleMenuOpen = (el: HTMLElement, toAddress: ToAddress) => { setMenuAnchorEl(el) setSelectedToAddress(toAddress) } const handleCopyAddress = () => { if (selectedToAddress) { navigator.clipboard.writeText(selectedToAddress.address) } closeMenu() } const handleViewOnExplorer = () => { if (selectedToAddress) { window.open( getAddressLink( selectedToAddress.address, defaultChainIdsByType[selectedToAddress.chainType] ), '_blank' ) } closeMenu() } return ( {toAddresses?.map((toAddress) => ( handleCuratedSelected(toAddress)} > handleMenuOpen(e.target as HTMLElement, toAddress) } sx={{ opacity: requiredToChainType && requiredToChainType !== toAddress.chainType ? 0.5 : 1, }} > ))} {t('button.copyAddress')} {t('button.viewOnExplorer')} ) }