/* `` ====================== This component renders a follow notification. __Props:__ - __`id` (`PropTypes.number.isRequired`) :__ This is the id of the notification. - __`onDeleteNotification` (`PropTypes.func.isRequired`) :__ The function to call when a notification should be dismissed/deleted. - __`account` (`PropTypes.object.isRequired`) :__ The account associated with the follow notification, ie the account which followed the user. - __`intl` (`PropTypes.object.isRequired`) :__ Our internationalization object, inserted by `@injectIntl`. */ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /* Imports: -------- */ // Package imports // import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; import escapeTextContentForBrowser from 'escape-html'; import ImmutablePureComponent from 'react-immutable-pure-component'; // Mastodon imports // import emojify from '../../../mastodon/emoji'; import Permalink from '../../../mastodon/components/permalink'; import AccountContainer from '../../../mastodon/containers/account_container'; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /* Inital setup: ------------- The `messages` constant is used to define any messages that we need from inside props. */ const messages = defineMessages({ deleteNotification : { id: 'status.dismiss_notification', defaultMessage: 'Dismiss notification' }, }); /* Implementation: --------------- */ @injectIntl export default class NotificationFollow extends ImmutablePureComponent { static propTypes = { id : PropTypes.number.isRequired, onDeleteNotification : PropTypes.func.isRequired, account : ImmutablePropTypes.map.isRequired, intl : PropTypes.object.isRequired, }; /* ### `handleNotificationDeleteClick()` This function just calls our `onDeleteNotification()` prop with the notification's `id`. */ handleNotificationDeleteClick = () => { this.props.onDeleteNotification(this.props.id); } /* ### `render()` This actually renders the component. */ render () { const { account, intl } = this.props; /* `dismiss` creates the notification dismissal button. Its title is given by `dismissTitle`. */ const dismissTitle = intl.formatMessage(messages.deleteNotification); const dismiss = ( ); /* `link` is a container for the account's `displayName`, which links to the account timeline using a ``. */ const displayName = account.get('display_name') || account.get('username'); const displayNameHTML = { __html: emojify(escapeTextContentForBrowser(displayName)) }; const link = ( ); /* We can now render our component. */ return (
{dismiss}
); } }