import { WarningRounded } from '@mui/icons-material' import clsx from 'clsx' import queryString from 'query-string' import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { KadoModalProps } from '@dao-dao/types' import { KADO_API_KEY, getSupportedChainConfig } from '@dao-dao/utils' import { CopyToClipboard } from '../CopyToClipboard' import { Loader } from '../logo' import { Modal } from './Modal' export const KadoModal = ({ chainId, defaultMode = 'buy', toAddress, containerClassName, ...modalProps }: KadoModalProps) => { const { t } = useTranslation() const kado = getSupportedChainConfig(chainId)?.kado if (!kado) { throw new Error(`Unsupported chainId: ${chainId}`) } // iframe hijacks clicks on mobile Safari even when pointer-events are set to // none (which happens on the modal when visible=false), so we need to // completely hide the iframe when invisible. // // https://stackoverflow.com/questions/39533016/iframe-with-pointer-eventsnone-hijacks-clicks-in-safari-on-ios const [iframeVisible, setIframeVisible] = useState(false) useEffect(() => { // Hide iframe at a delay after modal hides so it doesn't look weird when // disappearing, but show immediately when displaying. if (modalProps.visible) { setIframeVisible(true) } else { const timeout = setTimeout(() => setIframeVisible(false), 200) return () => clearTimeout(timeout) } }, [modalProps.visible]) return ( {toAddress && (

{t('info.verifyAddressMatches')}

)}
{iframeVisible && (