| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | 
							- // @flow
 - 
 - import React from 'react';
 - import { toArray } from 'react-emoji-render';
 - 
 - 
 - import { translate } from '../../../base/i18n';
 - import { Linkify } from '../../../base/react';
 - 
 - import { MESSAGE_TYPE_LOCAL } from '../../constants';
 - 
 - import AbstractChatMessage, {
 -     type Props
 - } from '../AbstractChatMessage';
 - import PrivateMessageButton from '../PrivateMessageButton';
 - 
 - /**
 -  * Renders a single chat message.
 -  */
 - class ChatMessage extends AbstractChatMessage<Props> {
 -     /**
 -      * Implements React's {@link Component#render()}.
 -      *
 -      * @inheritdoc
 -      * @returns {ReactElement}
 -      */
 -     render() {
 -         const { message } = this.props;
 -         const processedMessage = [];
 - 
 -         // content is an array of text and emoji components
 -         const content = toArray(this._getMessageText(), { className: 'smiley' });
 - 
 -         content.forEach(i => {
 -             if (typeof i === 'string') {
 -                 processedMessage.push(<Linkify key = { i }>{ i }</Linkify>);
 -             } else {
 -                 processedMessage.push(i);
 -             }
 -         });
 - 
 -         return (
 -             <div className = 'chatmessage-wrapper'>
 -                 <div className = 'replywrapper'>
 -                     <div className = 'chatmessage'>
 -                         { this.props.showDisplayName && this._renderDisplayName() }
 -                         <div className = 'usermessage'>
 -                             { processedMessage }
 -                         </div>
 -                         { message.privateMessage && this._renderPrivateNotice() }
 -                     </div>
 -                     { message.privateMessage && message.messageType !== MESSAGE_TYPE_LOCAL
 -                     && <PrivateMessageButton
 -                         participantID = { message.id }
 -                         reply = { true }
 -                         showLabel = { false } /> }
 -                 </div>
 -                 { this.props.showTimestamp && this._renderTimestamp() }
 -             </div>
 -         );
 -     }
 - 
 -     _getFormattedTimestamp: () => string;
 - 
 -     _getMessageText: () => string;
 - 
 -     _getPrivateNoticeMessage: () => string;
 - 
 -     /**
 -      * Renders the display name of the sender.
 -      *
 -      * @returns {React$Element<*>}
 -      */
 -     _renderDisplayName() {
 -         return (
 -             <div className = 'display-name'>
 -                 { this.props.message.displayName }
 -             </div>
 -         );
 -     }
 - 
 -     /**
 -      * Renders the message privacy notice.
 -      *
 -      * @returns {React$Element<*>}
 -      */
 -     _renderPrivateNotice() {
 -         return (
 -             <div className = 'privatemessagenotice'>
 -                 { this._getPrivateNoticeMessage() }
 -             </div>
 -         );
 -     }
 - 
 -     /**
 -      * Renders the time at which the message was sent.
 -      *
 -      * @returns {React$Element<*>}
 -      */
 -     _renderTimestamp() {
 -         return (
 -             <div className = 'timestamp'>
 -                 { this._getFormattedTimestamp() }
 -             </div>
 -         );
 -     }
 - }
 - 
 - export default translate(ChatMessage);
 
 
  |