12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // @flow
-
- import { PureComponent } from 'react';
-
- import { getLocalizedDateFormatter } from '../../base/i18n';
- import { MESSAGE_TYPE_ERROR, MESSAGE_TYPE_LOCAL } from '../constants';
-
- /**
- * Formatter string to display the message timestamp.
- */
- const TIMESTAMP_FORMAT = 'H:mm';
-
- /**
- * The type of the React {@code Component} props of {@code AbstractChatMessage}.
- */
- export type Props = {
-
- /**
- * The representation of a chat message.
- */
- message: Object,
-
- /**
- * Whether or not the avatar image of the participant which sent the message
- * should be displayed.
- */
- showAvatar: boolean,
-
- /**
- * Whether or not the name of the participant which sent the message should
- * be displayed.
- */
- showDisplayName: boolean,
-
- /**
- * Whether or not the time at which the message was sent should be
- * displayed.
- */
- showTimestamp: boolean,
-
- /**
- * Invoked to receive translated strings.
- */
- t: Function
- };
-
- /**
- * Abstract component to display a chat message.
- */
- export default class AbstractChatMessage<P: Props> extends PureComponent<P> {
- /**
- * Returns the timestamp to display for the message.
- *
- * @returns {string}
- */
- _getFormattedTimestamp() {
- return getLocalizedDateFormatter(new Date(this.props.message.timestamp))
- .format(TIMESTAMP_FORMAT);
- }
-
- /**
- * Generates the message text to be rendered in the component.
- *
- * @returns {string}
- */
- _getMessageText() {
- const { message } = this.props;
-
- return message.messageType === MESSAGE_TYPE_ERROR
- ? this.props.t('chat.error', {
- error: message.message
- })
- : message.message;
- }
-
- /**
- * Returns the message that is displayed as a notice for private messages.
- *
- * @returns {string}
- */
- _getPrivateNoticeMessage() {
- const { message, t } = this.props;
-
- return t('chat.privateNotice', {
- recipient: message.messageType === MESSAGE_TYPE_LOCAL ? message.recipient : t('chat.you')
- });
- }
- }
|