diff options
Diffstat (limited to 'app/assets/javascripts/components/containers/status_container.jsx')
-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); |