import type { TeactNode } from '@teact'; import { memo, useMemo } from '@teact'; import { getActions } from '../../../global'; import type { ApiPeer, ApiSavedStarGift, ApiStarGiftAttributeBackdrop, ApiStarGiftAttributeModel, ApiStarGiftAttributePattern, ApiTypeCurrencyAmount } from '../../../api/types'; import { formatStarsTransactionAmount, } from '../../../global/helpers/payments'; import { IS_TOUCH_ENV } from '../../../util/browser/windowEnvironment.ts'; import buildClassName from '../../../util/buildClassName'; import buildStyle from '../../../util/buildStyle'; import { useTransitionActiveKey } from '../../../hooks/animations/useTransitionActiveKey'; import useFlag from '../../../hooks/useFlag'; import useLang from '../../../hooks/useLang'; import AnimatedIconFromSticker from '../../common/AnimatedIconFromSticker'; import Icon from '../../common/icons/Icon'; import StarIcon from '../../common/icons/StarIcon'; import RadialPatternBackground from '../../common/profile/RadialPatternBackground'; import Transition from '../../ui/Transition'; import UniqueGiftManageButtons from './UniqueGiftManageButtons'; import styles from './UniqueGiftHeader.module.scss'; type OwnProps = { modelAttribute: ApiStarGiftAttributeModel; backdropAttribute: ApiStarGiftAttributeBackdrop; patternAttribute: ApiStarGiftAttributePattern; title?: string; subtitle?: TeactNode; subtitlePeer?: ApiPeer; className?: string; resellPrice?: ApiTypeCurrencyAmount; showManageButtons?: boolean; savedGift?: ApiSavedStarGift; }; const STICKER_SIZE = 120; const UniqueGiftHeader = ({ modelAttribute, backdropAttribute, patternAttribute, title, subtitle, subtitlePeer, className, resellPrice, showManageButtons, savedGift, }: OwnProps) => { const { openChat, } = getActions(); const lang = useLang(); const [isGiftHover, markGiftHover, unmarkGiftHover] = useFlag(false); const activeKey = useTransitionActiveKey([modelAttribute, backdropAttribute, patternAttribute]); const subtitleColor = backdropAttribute?.textColor; const radialPatternBackdrop = useMemo(() => { const backdropColors = [backdropAttribute.centerColor, backdropAttribute.edgeColor]; return ( ); }, [backdropAttribute, patternAttribute]); return (
{radialPatternBackdrop} {title &&

{title}

} {Boolean(subtitle) && (
{ if (subtitlePeer) { openChat({ id: subtitlePeer.id }); } }} > {subtitle}
)} {savedGift && showManageButtons && ( )} {resellPrice && (

{formatStarsTransactionAmount(lang, resellPrice)} {resellPrice.currency === 'XTR' && } {resellPrice.currency === 'TON' && }

)}
); }; export default memo(UniqueGiftHeader);