mastodon/app/javascript/glitch/components/notification/container.js

74 lines
1.6 KiB
JavaScript
Raw Normal View History

2017-07-14 13:13:02 -05:00
/*
`<NotificationContainer>`
=========================
This container connects `<Notification>`s to the Redux store.
*/
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
/*
Imports:
--------
*/
// Package imports //
2016-11-20 12:39:18 -06:00
import { connect } from 'react-redux';
// Mastodon imports //
import { makeGetNotification } from '../../../mastodon/selectors';
// Our imports //
import Notification from '.';
import { deleteNotification } from '../../../mastodon/actions/notifications';
2016-11-20 12:39:18 -06:00
2017-07-14 13:13:02 -05:00
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
/*
State mapping:
--------------
The `mapStateToProps()` function maps various state properties to the
props of our component. We wrap this in `makeMapStateToProps()` so that
we only have to call `makeGetNotification()` once instead of every
time.
*/
2016-11-20 12:39:18 -06:00
const makeMapStateToProps = () => {
const getNotification = makeGetNotification();
const mapStateToProps = (state, props) => ({
notification: getNotification(state, props.notification, props.accountId),
2017-06-29 00:00:54 -05:00
settings: state.get('local_settings'),
2016-11-20 12:39:18 -06:00
});
return mapStateToProps;
};
2017-07-14 13:13:02 -05:00
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
/*
Dispatch mapping:
-----------------
The `mapDispatchToProps()` function maps dispatches to our store to the
various props of our component. We only need to provide a dispatch for
deleting notifications.
*/
const mapDispatchToProps = dispatch => ({
onDeleteNotification (id) {
dispatch(deleteNotification(id));
},
});
export default connect(makeMapStateToProps, mapDispatchToProps)(Notification);