33 lines
		
	
	
	
		
			921 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			921 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { injectIntl } from 'react-intl';
 | |
| 
 | |
| import { connect } from 'react-redux';
 | |
| 
 | |
| import { NotificationStack } from 'react-notification';
 | |
| 
 | |
| import { dismissAlert } from '../../../actions/alerts';
 | |
| import { getAlerts } from '../../../selectors';
 | |
| 
 | |
| const formatIfNeeded = (intl, message, values) => {
 | |
|   if (typeof message === 'object') {
 | |
|     return intl.formatMessage(message, values);
 | |
|   }
 | |
| 
 | |
|   return message;
 | |
| };
 | |
| 
 | |
| const mapStateToProps = (state, { intl }) => ({
 | |
|   notifications: getAlerts(state).map(alert => ({
 | |
|     ...alert,
 | |
|     action: formatIfNeeded(intl, alert.action, alert.values),
 | |
|     title: formatIfNeeded(intl, alert.title, alert.values),
 | |
|     message: formatIfNeeded(intl, alert.message, alert.values),
 | |
|   })),
 | |
| });
 | |
| 
 | |
| const mapDispatchToProps = (dispatch) => ({
 | |
|   onDismiss (alert) {
 | |
|     dispatch(dismissAlert(alert));
 | |
|   },
 | |
| });
 | |
| 
 | |
| export default injectIntl(connect(mapStateToProps, mapDispatchToProps)(NotificationStack));
 |