import { connect } from 'react-redux'; import ComposeForm from '../components/compose_form'; import { changeCompose, submitCompose, clearComposeSuggestions, fetchComposeSuggestions, selectComposeSuggestion, changeComposeSpoilerText, insertEmojiCompose, uploadCompose, } from '../../../actions/compose'; const mapStateToProps = state => ({ text: state.getIn(['compose', 'text']), suggestions: state.getIn(['compose', 'suggestions']), spoiler: state.getIn(['compose', 'spoiler']), spoilerText: state.getIn(['compose', 'spoiler_text']), privacy: state.getIn(['compose', 'privacy']), focusDate: state.getIn(['compose', 'focusDate']), caretPosition: state.getIn(['compose', 'caretPosition']), preselectDate: state.getIn(['compose', 'preselectDate']), isSubmitting: state.getIn(['compose', 'is_submitting']), isChangingUpload: state.getIn(['compose', 'is_changing_upload']), isUploading: state.getIn(['compose', 'is_uploading']), showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']), anyMedia: state.getIn(['compose', 'media_attachments']).size > 0, }); const mapDispatchToProps = (dispatch) => ({ onChange (text) { dispatch(changeCompose(text)); }, onSubmit (router) { dispatch(submitCompose(router)); }, onClearSuggestions () { dispatch(clearComposeSuggestions()); }, onFetchSuggestions (token) { dispatch(fetchComposeSuggestions(token)); }, onSuggestionSelected (position, token, suggestion) { dispatch(selectComposeSuggestion(position, token, suggestion)); }, onChangeSpoilerText (checked) { dispatch(changeComposeSpoilerText(checked)); }, onPaste (files) { dispatch(uploadCompose(files)); }, onPickEmoji (position, data, needsSpace) { dispatch(insertEmojiCompose(position, data, needsSpace)); }, }); export default connect(mapStateToProps, mapDispatchToProps)(ComposeForm);