You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.3 KiB

  1. import { connect } from 'react-redux';
  2. import Status from '../components/status';
  3. import { makeGetStatus } from '../selectors';
  4. import {
  5. replyCompose,
  6. mentionCompose
  7. } from '../actions/compose';
  8. import {
  9. reblog,
  10. favourite,
  11. unreblog,
  12. unfavourite
  13. } from '../actions/interactions';
  14. import { deleteStatus } from '../actions/statuses';
  15. const makeMapStateToProps = () => {
  16. const getStatus = makeGetStatus();
  17. const mapStateToProps = (state, props) => ({
  18. status: getStatus(state, props.id),
  19. me: state.getIn(['timelines', 'me'])
  20. });
  21. return mapStateToProps;
  22. };
  23. const mapDispatchToProps = (dispatch) => ({
  24. onReply (status) {
  25. dispatch(replyCompose(status));
  26. },
  27. onReblog (status) {
  28. if (status.get('reblogged')) {
  29. dispatch(unreblog(status));
  30. } else {
  31. dispatch(reblog(status));
  32. }
  33. },
  34. onFavourite (status) {
  35. if (status.get('favourited')) {
  36. dispatch(unfavourite(status));
  37. } else {
  38. dispatch(favourite(status));
  39. }
  40. },
  41. onDelete (status) {
  42. dispatch(deleteStatus(status.get('id')));
  43. },
  44. onMention (account) {
  45. dispatch(mentionCompose(account));
  46. }
  47. });
  48. export default connect(makeMapStateToProps, mapDispatchToProps)(Status);