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/containers | |
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/containers')
-rw-r--r-- | app/assets/javascripts/components/containers/status_container.jsx | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/app/assets/javascripts/components/containers/status_container.jsx b/app/assets/javascripts/components/containers/status_container.jsx new file mode 100644 index 000000000..b4d3740d9 --- /dev/null +++ b/app/assets/javascripts/components/containers/status_container.jsx @@ -0,0 +1,59 @@ +import { connect } from 'react-redux'; +import Status from '../components/status'; +import { makeGetStatus } from '../selectors'; +import { + replyCompose, + mentionCompose +} from '../actions/compose'; +import { + reblog, + favourite, + unreblog, + unfavourite +} from '../actions/interactions'; +import { deleteStatus } from '../actions/statuses'; + +const makeMapStateToProps = () => { + const getStatus = makeGetStatus(); + + const mapStateToProps = (state, props) => ({ + status: getStatus(state, props.id), + me: state.getIn(['timelines', 'me']) + }); + + return mapStateToProps; +}; + +const mapDispatchToProps = (dispatch) => ({ + + onReply (status) { + dispatch(replyCompose(status)); + }, + + onReblog (status) { + if (status.get('reblogged')) { + dispatch(unreblog(status)); + } else { + dispatch(reblog(status)); + } + }, + + onFavourite (status) { + if (status.get('favourited')) { + dispatch(unfavourite(status)); + } else { + dispatch(favourite(status)); + } + }, + + onDelete (status) { + dispatch(deleteStatus(status.get('id'))); + }, + + onMention (account) { + dispatch(mentionCompose(account)); + } + +}); + +export default connect(makeMapStateToProps, mapDispatchToProps)(Status); |