import type { FC } from '../../../lib/teact/teact'; import React, { memo, useCallback } from '../../../lib/teact/teact'; import type { LangFn } from '../../../hooks/useLang'; import useLang from '../../../hooks/useLang'; import { getActions } from '../../../global'; import type { ApiMessage, StatisticsRecentMessage as StatisticsRecentMessageType } from '../../../api/types'; import buildClassName from '../../../util/buildClassName'; import { formatDateTimeToString } from '../../../util/dateFormat'; import { getMessageMediaHash, getMessageMediaThumbDataUri, getMessageVideo, getMessageRoundVideo, } from '../../../global/helpers'; import { renderMessageSummary } from '../../common/helpers/renderMessageText'; import useMedia from '../../../hooks/useMedia'; import './StatisticsRecentMessage.scss'; export type OwnProps = { message: ApiMessage & StatisticsRecentMessageType; }; const StatisticsRecentMessage: FC = ({ message }) => { const lang = useLang(); const { toggleMessageStatistics } = getActions(); const mediaThumbnail = getMessageMediaThumbDataUri(message); const mediaBlobUrl = useMedia(getMessageMediaHash(message, 'micro')); const isRoundVideo = Boolean(getMessageRoundVideo(message)); const handleClick = useCallback(() => { toggleMessageStatistics({ messageId: message.id }); }, [toggleMessageStatistics, message.id]); return (
{renderSummary(lang, message, mediaBlobUrl || mediaThumbnail, isRoundVideo)}
{lang('ChannelStats.ViewsCount', message.views, 'i')}
{formatDateTimeToString(message.date * 1000, lang.code)}
{message.forwards ? lang('ChannelStats.SharesCount', message.forwards) : 'No shares'}
); }; function renderSummary(lang: LangFn, message: ApiMessage, blobUrl?: string, isRoundVideo?: boolean) { if (!blobUrl) { return renderMessageSummary(lang, message); } return ( {getMessageVideo(message) && } {renderMessageSummary(lang, message, true)} ); } export default memo(StatisticsRecentMessage);