parent
							
								
									b9c3788485
								
							
						
					
					
						commit
						a791bac153
					
				
					 3 changed files with 25 additions and 8 deletions
				
			
		| 
						 | 
					@ -18,12 +18,12 @@ import classNames from 'classnames';
 | 
				
			||||||
// to use the progress bar to show download progress
 | 
					// to use the progress bar to show download progress
 | 
				
			||||||
import Bundle from '../features/ui/components/bundle';
 | 
					import Bundle from '../features/ui/components/bundle';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const textForScreenReader = (intl, status, rebloggedByText = false, expanded = false) => {
 | 
					export const textForScreenReader = (intl, status, rebloggedByText = false) => {
 | 
				
			||||||
  const displayName = status.getIn(['account', 'display_name']);
 | 
					  const displayName = status.getIn(['account', 'display_name']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const values = [
 | 
					  const values = [
 | 
				
			||||||
    displayName.length === 0 ? status.getIn(['account', 'acct']).split('@')[0] : displayName,
 | 
					    displayName.length === 0 ? status.getIn(['account', 'acct']).split('@')[0] : displayName,
 | 
				
			||||||
    status.get('spoiler_text') && !expanded ? status.get('spoiler_text') : status.get('search_index').slice(status.get('spoiler_text').length),
 | 
					    status.get('spoiler_text') && status.get('hidden') ? status.get('spoiler_text') : status.get('search_index').slice(status.get('spoiler_text').length),
 | 
				
			||||||
    intl.formatDate(status.get('created_at'), { hour: '2-digit', minute: '2-digit', month: 'short', day: 'numeric' }),
 | 
					    intl.formatDate(status.get('created_at'), { hour: '2-digit', minute: '2-digit', month: 'short', day: 'numeric' }),
 | 
				
			||||||
    status.getIn(['account', 'acct']),
 | 
					    status.getIn(['account', 'acct']),
 | 
				
			||||||
  ];
 | 
					  ];
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,11 +3,20 @@ import PropTypes from 'prop-types';
 | 
				
			||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
 | 
					import ImmutablePropTypes from 'react-immutable-proptypes';
 | 
				
			||||||
import StatusContainer from '../../../containers/status_container';
 | 
					import StatusContainer from '../../../containers/status_container';
 | 
				
			||||||
import AccountContainer from '../../../containers/account_container';
 | 
					import AccountContainer from '../../../containers/account_container';
 | 
				
			||||||
import { FormattedMessage } from 'react-intl';
 | 
					import { injectIntl, FormattedMessage } from 'react-intl';
 | 
				
			||||||
import Permalink from '../../../components/permalink';
 | 
					import Permalink from '../../../components/permalink';
 | 
				
			||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
 | 
					import ImmutablePureComponent from 'react-immutable-pure-component';
 | 
				
			||||||
import { HotKeys } from 'react-hotkeys';
 | 
					import { HotKeys } from 'react-hotkeys';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const notificationForScreenReader = (intl, message, timestamp) => {
 | 
				
			||||||
 | 
					  const output = [message];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  output.push(intl.formatDate(timestamp, { hour: '2-digit', minute: '2-digit', month: 'short', day: 'numeric' }));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return output.join(', ');
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@injectIntl
 | 
				
			||||||
export default class Notification extends ImmutablePureComponent {
 | 
					export default class Notification extends ImmutablePureComponent {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static contextTypes = {
 | 
					  static contextTypes = {
 | 
				
			||||||
| 
						 | 
					@ -20,6 +29,7 @@ export default class Notification extends ImmutablePureComponent {
 | 
				
			||||||
    onMoveUp: PropTypes.func.isRequired,
 | 
					    onMoveUp: PropTypes.func.isRequired,
 | 
				
			||||||
    onMoveDown: PropTypes.func.isRequired,
 | 
					    onMoveDown: PropTypes.func.isRequired,
 | 
				
			||||||
    onMention: PropTypes.func.isRequired,
 | 
					    onMention: PropTypes.func.isRequired,
 | 
				
			||||||
 | 
					    intl: PropTypes.object.isRequired,
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  handleMoveUp = () => {
 | 
					  handleMoveUp = () => {
 | 
				
			||||||
| 
						 | 
					@ -65,10 +75,12 @@ export default class Notification extends ImmutablePureComponent {
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  renderFollow (account, link) {
 | 
					  renderFollow (notification, account, link) {
 | 
				
			||||||
 | 
					    const { intl } = this.props;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
      <HotKeys handlers={this.getHandlers()}>
 | 
					      <HotKeys handlers={this.getHandlers()}>
 | 
				
			||||||
        <div className='notification notification-follow focusable' tabIndex='0'>
 | 
					        <div className='notification notification-follow focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage({ id: 'notification.follow', defaultMessage: '{name} followed you' }, { name: account.get('acct') }), notification.get('created_at'))}>
 | 
				
			||||||
          <div className='notification__message'>
 | 
					          <div className='notification__message'>
 | 
				
			||||||
            <div className='notification__favourite-icon-wrapper'>
 | 
					            <div className='notification__favourite-icon-wrapper'>
 | 
				
			||||||
              <i className='fa fa-fw fa-user-plus' />
 | 
					              <i className='fa fa-fw fa-user-plus' />
 | 
				
			||||||
| 
						 | 
					@ -97,9 +109,11 @@ export default class Notification extends ImmutablePureComponent {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  renderFavourite (notification, link) {
 | 
					  renderFavourite (notification, link) {
 | 
				
			||||||
 | 
					    const { intl } = this.props;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
      <HotKeys handlers={this.getHandlers()}>
 | 
					      <HotKeys handlers={this.getHandlers()}>
 | 
				
			||||||
        <div className='notification notification-favourite focusable' tabIndex='0'>
 | 
					        <div className='notification notification-favourite focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage({ id: 'notification.favourite', defaultMessage: '{name} favourited your status' }, { name: notification.getIn(['account', 'acct']) }), notification.get('created_at'))}>
 | 
				
			||||||
          <div className='notification__message'>
 | 
					          <div className='notification__message'>
 | 
				
			||||||
            <div className='notification__favourite-icon-wrapper'>
 | 
					            <div className='notification__favourite-icon-wrapper'>
 | 
				
			||||||
              <i className='fa fa-fw fa-star star-icon' />
 | 
					              <i className='fa fa-fw fa-star star-icon' />
 | 
				
			||||||
| 
						 | 
					@ -114,9 +128,11 @@ export default class Notification extends ImmutablePureComponent {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  renderReblog (notification, link) {
 | 
					  renderReblog (notification, link) {
 | 
				
			||||||
 | 
					    const { intl } = this.props;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
      <HotKeys handlers={this.getHandlers()}>
 | 
					      <HotKeys handlers={this.getHandlers()}>
 | 
				
			||||||
        <div className='notification notification-reblog focusable' tabIndex='0'>
 | 
					        <div className='notification notification-reblog focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage({ id: 'notification.reblog', defaultMessage: '{name} boosted your status' }, { name: notification.getIn(['account', 'acct']) }), notification.get('created_at'))}>
 | 
				
			||||||
          <div className='notification__message'>
 | 
					          <div className='notification__message'>
 | 
				
			||||||
            <div className='notification__favourite-icon-wrapper'>
 | 
					            <div className='notification__favourite-icon-wrapper'>
 | 
				
			||||||
              <i className='fa fa-fw fa-retweet' />
 | 
					              <i className='fa fa-fw fa-retweet' />
 | 
				
			||||||
| 
						 | 
					@ -138,7 +154,7 @@ export default class Notification extends ImmutablePureComponent {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    switch(notification.get('type')) {
 | 
					    switch(notification.get('type')) {
 | 
				
			||||||
    case 'follow':
 | 
					    case 'follow':
 | 
				
			||||||
      return this.renderFollow(account, link);
 | 
					      return this.renderFollow(notification, account, link);
 | 
				
			||||||
    case 'mention':
 | 
					    case 'mention':
 | 
				
			||||||
      return this.renderMention(notification);
 | 
					      return this.renderMention(notification);
 | 
				
			||||||
    case 'favourite':
 | 
					    case 'favourite':
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,6 +26,7 @@ const notificationToMap = notification => ImmutableMap({
 | 
				
			||||||
  id: notification.id,
 | 
					  id: notification.id,
 | 
				
			||||||
  type: notification.type,
 | 
					  type: notification.type,
 | 
				
			||||||
  account: notification.account.id,
 | 
					  account: notification.account.id,
 | 
				
			||||||
 | 
					  created_at: notification.created_at,
 | 
				
			||||||
  status: notification.status ? notification.status.id : null,
 | 
					  status: notification.status ? notification.status.id : null,
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue