- // Package imports.
- import React from 'react';
- import PropTypes from 'prop-types';
- import ImmutablePropTypes from 'react-immutable-proptypes';
- import ImmutablePureComponent from 'react-immutable-pure-component';
-
- // Our imports,
- import StatusContainer from 'flavours/glitch/containers/status_container';
- import NotificationFollow from './follow';
-
- export default class Notification extends ImmutablePureComponent {
-
- static propTypes = {
- notification: ImmutablePropTypes.map.isRequired,
- hidden: PropTypes.bool,
- onMoveUp: PropTypes.func.isRequired,
- onMoveDown: PropTypes.func.isRequired,
- onMention: PropTypes.func.isRequired,
- getScrollPosition: PropTypes.func,
- updateScrollBottom: PropTypes.func,
- };
-
- render () {
- const {
- hidden,
- notification,
- onMoveDown,
- onMoveUp,
- onMention,
- getScrollPosition,
- updateScrollBottom,
- } = this.props;
-
- switch(notification.get('type')) {
- case 'follow':
- return (
- <NotificationFollow
- hidden={hidden}
- id={notification.get('id')}
- account={notification.get('account')}
- notification={notification}
- onMoveDown={onMoveDown}
- onMoveUp={onMoveUp}
- onMention={onMention}
- />
- );
- case 'mention':
- return (
- <StatusContainer
- containerId={notification.get('id')}
- hidden={hidden}
- id={notification.get('status')}
- notification={notification}
- onMoveDown={onMoveDown}
- onMoveUp={onMoveUp}
- onMention={onMention}
- contextType='notifications'
- getScrollPosition={getScrollPosition}
- updateScrollBottom={updateScrollBottom}
- withDismiss
- />
- );
- case 'favourite':
- return (
- <StatusContainer
- containerId={notification.get('id')}
- hidden={hidden}
- id={notification.get('status')}
- account={notification.get('account')}
- prepend='favourite'
- muted
- notification={notification}
- onMoveDown={onMoveDown}
- onMoveUp={onMoveUp}
- onMention={onMention}
- getScrollPosition={getScrollPosition}
- updateScrollBottom={updateScrollBottom}
- withDismiss
- />
- );
- case 'reblog':
- return (
- <StatusContainer
- containerId={notification.get('id')}
- hidden={hidden}
- id={notification.get('status')}
- account={notification.get('account')}
- prepend='reblog'
- muted
- notification={notification}
- onMoveDown={onMoveDown}
- onMoveUp={onMoveUp}
- onMention={onMention}
- getScrollPosition={getScrollPosition}
- updateScrollBottom={updateScrollBottom}
- withDismiss
- />
- );
- default:
- return null;
- }
- }
-
- }
|