import React, { FC, memo, useCallback } from '../../lib/teact/teact'; import { ApiMessage } from '../../api/types'; import { getPictogramDimensions } from '../common/helpers/mediaDimensions'; import { getMessageMediaHash, getMessageSummaryText } from '../../modules/helpers'; import renderText from '../common/helpers/renderText'; import useMedia from '../../hooks/useMedia'; import useWebpThumbnail from '../../hooks/useWebpThumbnail'; import ConfirmDialog from '../ui/ConfirmDialog'; import Button from '../ui/Button'; import RippleEffect from '../ui/RippleEffect'; import buildClassName from '../../util/buildClassName'; import useFlag from '../../hooks/useFlag'; import useLang from '../../hooks/useLang'; import PinnedMessageNavigation from './PinnedMessageNavigation'; type OwnProps = { message: ApiMessage; index: number; count: number; customTitle?: string; className?: string; onUnpinMessage?: (id: number) => void; onClick?: () => void; onAllPinnedClick?: () => void; }; const HeaderPinnedMessage: FC = ({ message, count, index, customTitle, className, onUnpinMessage, onClick, onAllPinnedClick, }) => { const mediaThumbnail = useWebpThumbnail(message); const mediaBlobUrl = useMedia(getMessageMediaHash(message, 'pictogram')); const text = getMessageSummaryText(message, Boolean(mediaThumbnail)); const [isUnpinDialogOpen, openUnpinDialog, closeUnpinDialog] = useFlag(); const handleUnpinMessage = useCallback(() => { closeUnpinDialog(); if (onUnpinMessage) { onUnpinMessage(message.id); } }, [closeUnpinDialog, onUnpinMessage, message.id]); const lang = useLang(); return (
{count > 1 && ( )} {onUnpinMessage && ( )}
{mediaThumbnail && renderPictogram(mediaThumbnail, mediaBlobUrl)}
{customTitle || `${lang('PinnedMessage')} ${index > 0 ? `#${count - index}` : ''}`}

{renderText(text)}

); }; function renderPictogram(thumbDataUri: string, blobUrl?: string) { const { width, height } = getPictogramDimensions(); return ( ); } export default memo(HeaderPinnedMessage);