50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { connect } from 'react-redux';
 | |
| 
 | |
| import { mentionCompose } from '../../../actions/compose';
 | |
| import {
 | |
|   toggleFavourite,
 | |
|   toggleReblog,
 | |
| } from '../../../actions/interactions';
 | |
| import {
 | |
|   toggleStatusSpoilers,
 | |
| } from '../../../actions/statuses';
 | |
| import { makeGetNotification, makeGetStatus, makeGetReport } from '../../../selectors';
 | |
| import Notification from '../components/notification';
 | |
| 
 | |
| const makeMapStateToProps = () => {
 | |
|   const getNotification = makeGetNotification();
 | |
|   const getStatus = makeGetStatus();
 | |
|   const getReport = makeGetReport();
 | |
| 
 | |
|   const mapStateToProps = (state, props) => {
 | |
|     const notification = getNotification(state, props.notification, props.accountId);
 | |
|     return {
 | |
|       notification: notification,
 | |
|       status: notification.get('status') ? getStatus(state, { id: notification.get('status'), contextType: 'notifications' }) : null,
 | |
|       report: notification.get('report') ? getReport(state, notification.get('report'), notification.getIn(['report', 'target_account', 'id'])) : null,
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   return mapStateToProps;
 | |
| };
 | |
| 
 | |
| const mapDispatchToProps = dispatch => ({
 | |
|   onMention: (account) => {
 | |
|     dispatch(mentionCompose(account));
 | |
|   },
 | |
| 
 | |
|   onReblog (status, e) {
 | |
|     dispatch(toggleReblog(status.get('id'), e.shiftKey));
 | |
|   },
 | |
| 
 | |
|   onFavourite (status) {
 | |
|     dispatch(toggleFavourite(status.get('id')));
 | |
|   },
 | |
| 
 | |
|   onToggleHidden (status) {
 | |
|     dispatch(toggleStatusSpoilers(status.get('id')));
 | |
|   },
 | |
| });
 | |
| 
 | |
| export default connect(makeMapStateToProps, mapDispatchToProps)(Notification);
 |