about summary refs log tree commit diff
path: root/app/assets/javascripts/components/features/compose/containers/compose_form_container.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/components/features/compose/containers/compose_form_container.jsx')
-rw-r--r--app/assets/javascripts/components/features/compose/containers/compose_form_container.jsx58
1 files changed, 58 insertions, 0 deletions
diff --git a/app/assets/javascripts/components/features/compose/containers/compose_form_container.jsx b/app/assets/javascripts/components/features/compose/containers/compose_form_container.jsx
new file mode 100644
index 000000000..87bcd6b99
--- /dev/null
+++ b/app/assets/javascripts/components/features/compose/containers/compose_form_container.jsx
@@ -0,0 +1,58 @@
+import { connect } from 'react-redux';
+import ComposeForm from '../components/compose_form';
+import {
+  changeCompose,
+  submitCompose,
+  cancelReplyCompose,
+  clearComposeSuggestions,
+  fetchComposeSuggestions,
+  selectComposeSuggestion
+} from '../../../actions/compose';
+import { makeGetStatus } from '../../../selectors';
+
+const makeMapStateToProps = () => {
+  const getStatus = makeGetStatus();
+
+  const mapStateToProps = function (state, props) {
+    return {
+      text: state.getIn(['compose', 'text']),
+      suggestion_token: state.getIn(['compose', 'suggestion_token']),
+      suggestions: state.getIn(['compose', 'suggestions']).toJS(),
+      is_submitting: state.getIn(['compose', 'is_submitting']),
+      is_uploading: state.getIn(['compose', 'is_uploading']),
+      in_reply_to: getStatus(state, state.getIn(['compose', 'in_reply_to']))
+    };
+  };
+
+  return mapStateToProps;
+};
+
+const mapDispatchToProps = function (dispatch) {
+  return {
+    onChange (text) {
+      dispatch(changeCompose(text));
+    },
+
+    onSubmit () {
+      dispatch(submitCompose());
+    },
+
+    onCancelReply () {
+      dispatch(cancelReplyCompose());
+    },
+
+    onClearSuggestions () {
+      dispatch(clearComposeSuggestions());
+    },
+
+    onFetchSuggestions (token) {
+      dispatch(fetchComposeSuggestions(token));
+    },
+
+    onSuggestionSelected (position, accountId) {
+      dispatch(selectComposeSuggestion(position, accountId));
+    }
+  }
+};
+
+export default connect(makeMapStateToProps, mapDispatchToProps)(ComposeForm);