import { connect } from 'react-redux'; import ComposeForm from '../components/compose_form'; import { changeCompose, submitCompose, cancelReplyCompose, clearComposeSuggestions, fetchComposeSuggestions, selectComposeSuggestion, changeComposeSensitivity, changeComposeVisibility } 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(), sensitive: state.getIn(['compose', 'sensitive']), unlisted: state.getIn(['compose', 'unlisted']), 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)); }, onChangeSensitivity (checked) { dispatch(changeComposeSensitivity(checked)); }, onChangeVisibility (checked) { dispatch(changeComposeVisibility(checked)); } } }; export default connect(makeMapStateToProps, mapDispatchToProps)(ComposeForm);