// @flow import React from 'react'; import { Text, TouchableOpacity, View } from 'react-native'; import { translate } from '../../../base/i18n'; import { Icon, IconClose } from '../../../base/icons'; import AbstractNotification, { type Props } from '../AbstractNotification'; import styles from './styles'; /** * Implements a React {@link Component} to display a notification. * * @extends Component */ class Notification extends AbstractNotification { /** * Implements React's {@link Component#render()}. * * @inheritdoc * @returns {ReactElement} */ render() { const { isDismissAllowed } = this.props; return ( { this._renderContent() } { isDismissAllowed && } ); } /** * Renders the notification's content. If the title or title key is present * it will be just the title. Otherwise it will fallback to description. * * @returns {Array} * @private */ _renderContent() { const { t, title, titleArguments, titleKey } = this.props; const titleText = title || (titleKey && t(titleKey, titleArguments)); const description = this._getDescription(); if (description && description.length) { return description.map((line, index) => ( { line } )); } return ( { titleText } ); } _getDescription: () => Array; _onDismissed: () => void; } export default translate(Notification);