import type { FC } from '../../lib/teact/teact'; import { 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 useOldLang from '../../hooks/useOldLang'; import DotAnimation from './DotAnimation'; import './TypingStatus.scss'; type OwnProps = { typingStatus: ApiTypingStatus; }; type StateProps = { typingUser?: ApiUser; }; const TypingStatus: FC = ({ typingStatus, typingUser }) => { const lang = useOldLang(); 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 }): Complete => { if (!typingStatus.userId) { return { typingUser: undefined }; } const typingUser = selectUser(global, typingStatus.userId); return { typingUser }; }, )(TypingStatus));