import type { FC } from '../../lib/teact/teact'; import React, { memo } from '../../lib/teact/teact'; import { withGlobal } from '../../global'; import type { ApiTypingStatus, ApiUser } from '../../api/types'; import { getUserFirstOrLastName } from '../../global/helpers'; import { selectUser } from '../../global/selectors'; import renderText from './helpers/renderText'; import useLang from '../../hooks/useLang'; import DotAnimation from './DotAnimation'; import './TypingStatus.scss'; type OwnProps = { typingStatus: ApiTypingStatus; }; type StateProps = { typingUser?: ApiUser; }; const TypingStatus: FC = ({ typingStatus, typingUser }) => { const lang = useLang(); const typingUserName = typingUser && !typingUser.isSelf && getUserFirstOrLastName(typingUser); const content = lang(typingStatus.action) // Fix for translation "{user} is typing" .replace('{user}', '') .replace('{emoji}', typingStatus.emoji || '').trim(); return (

{typingUserName && ( {renderText(typingUserName)} )}

); }; export default memo(withGlobal( (global, { typingStatus }): StateProps => { if (!typingStatus.userId) { return {}; } const typingUser = selectUser(global, typingStatus.userId); return { typingUser }; }, )(TypingStatus));