diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2016-10-24 17:11:02 +0200 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2016-10-24 18:08:23 +0200 |
commit | f8f40f15dafca65dc07d5c5c19fb9a9dc3473dd6 (patch) | |
tree | b9817a27143158a5c26f9b447a8a58dbb4b272d3 /app/assets/javascripts/components/features/account_timeline | |
parent | 61db14bcbe424731c01cf782e8e147a9551c6125 (diff) |
Move status components inside individual containers. We still need to select
all statuses/accounts to assemble, but at least lists don't have to be re-rendered all the time now. Also add "mention" dropdown option
Diffstat (limited to 'app/assets/javascripts/components/features/account_timeline')
-rw-r--r-- | app/assets/javascripts/components/features/account_timeline/index.jsx | 46 |
1 files changed, 9 insertions, 37 deletions
diff --git a/app/assets/javascripts/components/features/account_timeline/index.jsx b/app/assets/javascripts/components/features/account_timeline/index.jsx index 0b3d641d5..f79570361 100644 --- a/app/assets/javascripts/components/features/account_timeline/index.jsx +++ b/app/assets/javascripts/components/features/account_timeline/index.jsx @@ -1,23 +1,15 @@ import { connect } from 'react-redux'; import PureRenderMixin from 'react-addons-pure-render-mixin'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { getAccountTimeline } from '../../selectors'; import { fetchAccountTimeline, expandAccountTimeline } from '../../actions/accounts'; -import { deleteStatus } from '../../actions/statuses'; -import { replyCompose } from '../../actions/compose'; -import { - favourite, - reblog, - unreblog, - unfavourite -} from '../../actions/interactions'; import StatusList from '../../components/status_list'; +import LoadingIndicator from '../../components/loading_indicator'; const mapStateToProps = (state, props) => ({ - statuses: getAccountTimeline(state, Number(props.params.accountId)), + statusIds: state.getIn(['timelines', 'accounts_timelines', Number(props.params.accountId)]), me: state.getIn(['timelines', 'me']) }); @@ -26,7 +18,7 @@ const AccountTimeline = React.createClass({ propTypes: { params: React.PropTypes.object.isRequired, dispatch: React.PropTypes.func.isRequired, - statuses: ImmutablePropTypes.list + statusIds: ImmutablePropTypes.list }, mixins: [PureRenderMixin], @@ -41,38 +33,18 @@ const AccountTimeline = React.createClass({ } }, - handleReply (status) { - this.props.dispatch(replyCompose(status)); - }, - - handleReblog (status) { - if (status.get('reblogged')) { - this.props.dispatch(unreblog(status)); - } else { - this.props.dispatch(reblog(status)); - } - }, - - handleFavourite (status) { - if (status.get('favourited')) { - this.props.dispatch(unfavourite(status)); - } else { - this.props.dispatch(favourite(status)); - } - }, - - handleDelete (status) { - this.props.dispatch(deleteStatus(status.get('id'))); - }, - handleScrollToBottom () { this.props.dispatch(expandAccountTimeline(Number(this.props.params.accountId))); }, render () { - const { statuses, me } = this.props; + const { statusIds, me } = this.props; + + if (!statusIds) { + return <LoadingIndicator />; + } - return <StatusList statuses={statuses} me={me} onScrollToBottom={this.handleScrollToBottom} onReply={this.handleReply} onReblog={this.handleReblog} onFavourite={this.handleFavourite} onDelete={this.handleDelete} /> + return <StatusList statusIds={statusIds} me={me} onScrollToBottom={this.handleScrollToBottom} /> } }); |