import { memo } from '../../../../lib/teact/teact'; import { getActions, withGlobal } from '../../../../global'; import type { ApiMessage, ApiPeer } from '../../../../api/types'; import type { ApiMessageActionSuggestedPostApproval } from '../../../../api/types/messageActions'; import { STARS_CURRENCY_CODE, TON_CURRENCY_CODE } from '../../../../config'; import { getPeerFullTitle } from '../../../../global/helpers/peers'; import { selectChatMessage, selectSender } from '../../../../global/selectors'; import buildClassName from '../../../../util/buildClassName'; import { renderPeerLink } from '../helpers/messageActions'; import useLang from '../../../../hooks/useLang'; import useLastCallback from '../../../../hooks/useLastCallback'; import Sparkles from '../../../common/Sparkles'; import styles from '../ActionMessage.module.scss'; type OwnProps = { message: ApiMessage; action: ApiMessageActionSuggestedPostApproval; onClick?: NoneToVoidFunction; }; type StateProps = { sender?: ApiPeer; replyMessageSender?: ApiPeer; replyMessage?: ApiMessage; }; const SuggestedPostBalanceTooLow = ({ onClick, message, sender, replyMessageSender, replyMessage, }: OwnProps & StateProps) => { const { openStarsBalanceModal } = getActions(); const lang = useLang(); const handleGetMoreStars = useLastCallback((e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); openStarsBalanceModal({}); }); const targetPeer = replyMessageSender || sender; const peerTitle = targetPeer && getPeerFullTitle(lang, targetPeer); const peerLink = renderPeerLink(targetPeer?.id, peerTitle || lang('ActionFallbackUser')); const currency = replyMessage?.suggestedPostInfo?.price?.currency || STARS_CURRENCY_CODE; const currencyName = currency === TON_CURRENCY_CODE ? lang('CurrencyTon') : lang('CurrencyStars'); const buyButtonText = currency === TON_CURRENCY_CODE ? lang('ButtonTopUpViaFragment') : lang('ButtonBuyStars'); return (
{lang('SuggestedPostBalanceTooLow', { peer: peerLink, currency: currencyName, }, { withNodes: true, withMarkdown: true })}
{!message.isOutgoing && (
{buyButtonText}
)}
); }; export default memo(withGlobal( (global, { message }): StateProps => { const sender = selectSender(global, message); const replyMessage = message.replyInfo?.type === 'message' && message.replyInfo.replyToMsgId ? selectChatMessage(global, message.chatId, message.replyInfo.replyToMsgId) : undefined; const replyMessageSender = replyMessage ? selectSender(global, replyMessage) : undefined; return { sender, replyMessageSender, replyMessage, }; }, )(SuggestedPostBalanceTooLow));