import { memo, } from '../../lib/teact/teact'; import { getActions, withGlobal } from '../../global'; import type { ApiStarsAmount, ApiTonAmount } from '../../api/types'; import { TON_USD_RATE_DEFAULT, } from '../../config'; import { formatStarsAmount } from '../../global/helpers/payments'; import buildClassName from '../../util/buildClassName'; import { convertTonFromNanos, convertTonToUsd, formatCurrencyAsString } from '../../util/formatCurrency'; import { formatStarsAsIcon, formatTonAsIcon } from '../../util/localization/format'; import useLang from '../../hooks/useLang'; import useLastCallback from '../../hooks/useLastCallback'; import useShowTransition from '../../hooks/useShowTransition'; import Link from './Link'; import styles from './ModalStarBalanceBar.module.scss'; export type OwnProps = { onCloseAnimationEnd?: () => void; isModalOpen?: true; currency?: 'TON' | 'XTR'; }; export type StateProps = { starBalance?: ApiStarsAmount; tonBalance?: ApiTonAmount; tonUsdRate: number; }; function ModalStarBalanceBar({ starBalance, tonBalance, tonUsdRate, isModalOpen, onCloseAnimationEnd, currency, }: StateProps & OwnProps) { const { openStarsBalanceModal, } = getActions(); const lang = useLang(); const isTonMode = currency === 'TON'; const currentBalance = isTonMode ? tonBalance : starBalance; const isOpen = isModalOpen ? Boolean(currentBalance) : false; const { ref, shouldRender, } = useShowTransition({ isOpen, onCloseAnimationEnd, withShouldRender: true, }); const handleGetMoreStars = useLastCallback(() => { openStarsBalanceModal(isTonMode ? { currency: 'TON' } : {}); }); if (!shouldRender || !currentBalance) { return undefined; } return (