mastodon/app/javascript/mastodon/features/compose/containers/compose_form_container.js

67 lines
2.0 KiB
JavaScript

import { connect } from 'react-redux';
import ComposeForm from '../components/compose_form';
import {
changeCompose,
changeComposeSpoilerText,
clearComposeSuggestions,
fetchComposeSuggestions,
insertEmojiCompose,
selectComposeSuggestion,
submitCompose,
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, path) {
dispatch(selectComposeSuggestion(position, token, suggestion, path));
},
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);