diff options
author | kibigo! <marrus-sh@users.noreply.github.com> | 2017-07-12 01:02:51 -0700 |
---|---|---|
committer | kibigo! <marrus-sh@users.noreply.github.com> | 2017-07-12 01:02:51 -0700 |
commit | 297921fce570bfab413bab4e16a4ae694ecc4f28 (patch) | |
tree | 279bd98fe3102bd607c222f0497b7549fbb749d8 /app/javascript/glitch/components/notification | |
parent | 74eff5456c8655e6783ffe49a96042320af3848c (diff) |
Moved glitch files to their own location ;)
Diffstat (limited to 'app/javascript/glitch/components/notification')
-rw-r--r-- | app/javascript/glitch/components/notification/index.js | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/app/javascript/glitch/components/notification/index.js b/app/javascript/glitch/components/notification/index.js new file mode 100644 index 000000000..3f424d85d --- /dev/null +++ b/app/javascript/glitch/components/notification/index.js @@ -0,0 +1,93 @@ +// Package imports // +import React from 'react'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { FormattedMessage } from 'react-intl'; +import escapeTextContentForBrowser from 'escape-html'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + +// Mastodon imports // +import AccountContainer from '../../../mastodon/containers/account_container'; +import Permalink from '../../../mastodon/components/permalink'; +import emojify from '../../../mastodon/emoji'; + +// Our imports // +import StatusContainer from '../../containers/status'; + +export default class Notification extends ImmutablePureComponent { + + static propTypes = { + notification: ImmutablePropTypes.map.isRequired, + settings: ImmutablePropTypes.map.isRequired, + }; + + renderFollow (notification) { + const account = notification.get('account'); + const displayName = account.get('display_name').length > 0 ? account.get('display_name') : account.get('username'); + const displayNameHTML = { __html: emojify(escapeTextContentForBrowser(displayName)) }; + const link = <Permalink className='notification__display-name' href={account.get('url')} title={account.get('acct')} to={`/accounts/${account.get('id')}`} dangerouslySetInnerHTML={displayNameHTML} />; + return ( + <div className='notification notification-follow'> + <div className='notification__message'> + <div className='notification__favourite-icon-wrapper'> + <i className='fa fa-fw fa-user-plus' /> + </div> + + <FormattedMessage id='notification.follow' defaultMessage='{name} followed you' values={{ name: link }} /> + </div> + + <AccountContainer id={account.get('id')} withNote={false} /> + </div> + ); + } + + renderMention (notification) { + return ( + <StatusContainer + id={notification.get('status')} + withDismiss + /> + ); + } + + renderFavourite (notification) { + return ( + <StatusContainer + id={notification.get('status')} + account={notification.get('account')} + prepend='favourite' + muted + withDismiss + /> + ); + } + + renderReblog (notification) { + return ( + <StatusContainer + id={notification.get('status')} + account={notification.get('account')} + prepend='reblog' + muted + withDismiss + /> + ); + } + + render () { + const { notification } = this.props; + + switch(notification.get('type')) { + case 'follow': + return this.renderFollow(notification); + case 'mention': + return this.renderMention(notification); + case 'favourite': + return this.renderFavourite(notification); + case 'reblog': + return this.renderReblog(notification); + } + + return null; + } + +} |