Fix notification message for own poll (#12219)
This commit is contained in:
		
					parent
					
						
							
								5b46467474
							
						
					
				
			
			
				commit
				
					
						a4301b5202
					
				
			
		
					 1 changed files with 29 additions and 14 deletions
				
			
		|  | @ -1,13 +1,22 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; |  | ||||||
| import ImmutablePropTypes from 'react-immutable-proptypes'; | import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||||
| import StatusContainer from '../../../containers/status_container'; | import { injectIntl, FormattedMessage, defineMessages } from 'react-intl'; | ||||||
| import AccountContainer from '../../../containers/account_container'; |  | ||||||
| import { injectIntl, FormattedMessage } from 'react-intl'; |  | ||||||
| import Permalink from '../../../components/permalink'; |  | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; |  | ||||||
| import { HotKeys } from 'react-hotkeys'; | import { HotKeys } from 'react-hotkeys'; | ||||||
|  | import PropTypes from 'prop-types'; | ||||||
|  | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
|  | import { me } from 'mastodon/initial_state'; | ||||||
|  | import StatusContainer from 'mastodon/containers/status_container'; | ||||||
|  | import AccountContainer from 'mastodon/containers/account_container'; | ||||||
| import Icon from 'mastodon/components/icon'; | import Icon from 'mastodon/components/icon'; | ||||||
|  | import Permalink from 'mastodon/components/permalink'; | ||||||
|  | 
 | ||||||
|  | const messages = defineMessages({ | ||||||
|  |   favourite: { id: 'notification.favourite', defaultMessage: '{name} favourited your status' }, | ||||||
|  |   follow: { id: 'notification.follow', defaultMessage: '{name} followed you' }, | ||||||
|  |   ownPoll: { id: 'notification.own_poll', defaultMessage: 'Your poll has ended' }, | ||||||
|  |   poll: { id: 'notification.poll', defaultMessage: 'A poll you have voted in has ended' }, | ||||||
|  |   reblog: { id: 'notification.reblog', defaultMessage: '{name} boosted your status' }, | ||||||
|  | }); | ||||||
| 
 | 
 | ||||||
| const notificationForScreenReader = (intl, message, timestamp) => { | const notificationForScreenReader = (intl, message, timestamp) => { | ||||||
|   const output = [message]; |   const output = [message]; | ||||||
|  | @ -107,7 +116,7 @@ class Notification extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|       <HotKeys handlers={this.getHandlers()}> |       <HotKeys handlers={this.getHandlers()}> | ||||||
|         <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 notification-follow focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.follow, { 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'> | ||||||
|               <Icon id='user-plus' fixedWidth /> |               <Icon id='user-plus' fixedWidth /> | ||||||
|  | @ -146,7 +155,7 @@ class Notification extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|       <HotKeys handlers={this.getHandlers()}> |       <HotKeys handlers={this.getHandlers()}> | ||||||
|         <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 notification-favourite focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.favourite, { 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'> | ||||||
|               <Icon id='star' className='star-icon' fixedWidth /> |               <Icon id='star' className='star-icon' fixedWidth /> | ||||||
|  | @ -178,7 +187,7 @@ class Notification extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|       <HotKeys handlers={this.getHandlers()}> |       <HotKeys handlers={this.getHandlers()}> | ||||||
|         <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 notification-reblog focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.reblog, { 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'> | ||||||
|               <Icon id='retweet' fixedWidth /> |               <Icon id='retweet' fixedWidth /> | ||||||
|  | @ -205,25 +214,31 @@ class Notification extends ImmutablePureComponent { | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   renderPoll (notification) { |   renderPoll (notification, account) { | ||||||
|     const { intl } = this.props; |     const { intl } = this.props; | ||||||
|  |     const ownPoll  = me === account.get('id'); | ||||||
|  |     const message  = ownPoll ? intl.formatMessage(messages.ownPoll) : intl.formatMessage(messages.poll); | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|       <HotKeys handlers={this.getHandlers()}> |       <HotKeys handlers={this.getHandlers()}> | ||||||
|         <div className='notification notification-poll focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage({ id: 'notification.poll', defaultMessage: 'A poll you have voted in has ended' }), notification.get('created_at'))}> |         <div className='notification notification-poll focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, message, notification.get('created_at'))}> | ||||||
|           <div className='notification__message'> |           <div className='notification__message'> | ||||||
|             <div className='notification__favourite-icon-wrapper'> |             <div className='notification__favourite-icon-wrapper'> | ||||||
|               <Icon id='tasks' fixedWidth /> |               <Icon id='tasks' fixedWidth /> | ||||||
|             </div> |             </div> | ||||||
| 
 | 
 | ||||||
|             <span title={notification.get('created_at')}> |             <span title={notification.get('created_at')}> | ||||||
|               <FormattedMessage id='notification.poll' defaultMessage='A poll you have voted in has ended' /> |               {ownPoll ? ( | ||||||
|  |                 <FormattedMessage id='notification.ownPoll' defaultMessage='Your poll has ended' /> | ||||||
|  |               ) : ( | ||||||
|  |                 <FormattedMessage id='notification.poll' defaultMessage='A poll you have voted in has ended' /> | ||||||
|  |               )} | ||||||
|             </span> |             </span> | ||||||
|           </div> |           </div> | ||||||
| 
 | 
 | ||||||
|           <StatusContainer |           <StatusContainer | ||||||
|             id={notification.get('status')} |             id={notification.get('status')} | ||||||
|             account={notification.get('account')} |             account={account} | ||||||
|             muted |             muted | ||||||
|             withDismiss |             withDismiss | ||||||
|             hidden={this.props.hidden} |             hidden={this.props.hidden} | ||||||
|  | @ -253,7 +268,7 @@ class Notification extends ImmutablePureComponent { | ||||||
|     case 'reblog': |     case 'reblog': | ||||||
|       return this.renderReblog(notification, link); |       return this.renderReblog(notification, link); | ||||||
|     case 'poll': |     case 'poll': | ||||||
|       return this.renderPoll(notification); |       return this.renderPoll(notification, account); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return null; |     return null; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue