See #244 - Added notifications column settings to filter what's displayed

in the column and what appears as desktop notifications. Settings do not
persist yet
This commit is contained in:
Eugen Rochko 2017-01-02 14:09:57 +01:00
parent 75122e162d
commit 65647a2472
7 changed files with 221 additions and 8 deletions

View file

@ -9,13 +9,21 @@ import {
import NotificationContainer from './containers/notification_container';
import { ScrollContainer } from 'react-router-scroll';
import { defineMessages, injectIntl } from 'react-intl';
import ColumnSettingsContainer from './containers/column_settings_container';
import { createSelector } from 'reselect';
import Immutable from 'immutable';
const messages = defineMessages({
title: { id: 'column.notifications', defaultMessage: 'Notifications' }
});
const getNotifications = createSelector([
state => Immutable.List(state.getIn(['notifications', 'settings', 'shows']).filter(item => !item).keys()),
state => state.getIn(['notifications', 'items'])
], (excludedTypes, notifications) => notifications.filterNot(item => excludedTypes.includes(item.get('type'))));
const mapStateToProps = state => ({
notifications: state.getIn(['notifications', 'items'])
notifications: getNotifications(state)
});
const Notifications = React.createClass({
@ -23,7 +31,8 @@ const Notifications = React.createClass({
propTypes: {
notifications: ImmutablePropTypes.list.isRequired,
dispatch: React.PropTypes.func.isRequired,
trackScroll: React.PropTypes.bool
trackScroll: React.PropTypes.bool,
intl: React.PropTypes.object.isRequired
},
getDefaultProps () {
@ -69,6 +78,7 @@ const Notifications = React.createClass({
} else {
return (
<Column icon='bell' heading={intl.formatMessage(messages.title)}>
<ColumnSettingsContainer />
{scrollableArea}
</Column>
);