1 import React
from 'react';
2 import { connect
} from 'react-redux';
3 import PropTypes
from 'prop-types';
4 import ImmutablePropTypes
from 'react-immutable-proptypes';
5 import LoadingIndicator
from '../../components/loading_indicator';
6 import { ScrollContainer
} from 'react-router-scroll';
7 import Column
from '../ui/components/column';
8 import ColumnBackButtonSlim
from '../../components/column_back_button_slim';
9 import AccountContainer
from '../../containers/account_container';
10 import { fetchMutes
, expandMutes
} from '../../actions/mutes';
11 import { defineMessages
, injectIntl
} from 'react-intl';
12 import ImmutablePureComponent
from 'react-immutable-pure-component';
14 const messages
= defineMessages({
15 heading: { id: 'column.mutes', defaultMessage: 'Muted users' },
18 const mapStateToProps
= state
=> ({
19 accountIds: state
.getIn(['user_lists', 'mutes', 'items']),
22 class Mutes
extends ImmutablePureComponent
{
24 componentWillMount () {
25 this.props
.dispatch(fetchMutes());
28 handleScroll
= (e
) => {
29 const { scrollTop
, scrollHeight
, clientHeight
} = e
.target
;
31 if (scrollTop
=== scrollHeight
- clientHeight
) {
32 this.props
.dispatch(expandMutes());
37 const { intl
, accountIds
} = this.props
;
48 <Column icon
='volume-off' heading
={intl
.formatMessage(messages
.heading
)}>
49 <ColumnBackButtonSlim
/>
50 <ScrollContainer scrollKey
='mutes'>
51 <div className
='scrollable mutes' onScroll
={this.handleScroll
}>
53 <AccountContainer key
={id
} id
={id
} />
64 params: PropTypes
.object
.isRequired
,
65 dispatch: PropTypes
.func
.isRequired
,
66 accountIds: ImmutablePropTypes
.list
,
67 intl: PropTypes
.object
.isRequired
,
70 export default connect(mapStateToProps
)(injectIntl(Mutes
));