chuckya/app/javascript/flavours/glitch/features/compose/containers/options_container.js

54 lines
1.7 KiB
JavaScript
Raw Normal View History

2019-04-22 01:31:26 +09:00
import { connect } from 'react-redux';
import Options from '../components/options';
import {
changeComposeAdvancedOption,
changeComposeContentType,
addPoll,
removePoll,
2019-04-22 01:31:26 +09:00
} from 'flavours/glitch/actions/compose';
import { openModal } from 'flavours/glitch/actions/modal';
2019-04-22 01:31:26 +09:00
function mapStateToProps (state) {
const spoilersAlwaysOn = state.getIn(['local_settings', 'always_show_spoilers_field']);
const poll = state.getIn(['compose', 'poll']);
const media = state.getIn(['compose', 'media_attachments']);
const pending_media = state.getIn(['compose', 'pending_media_attachments']);
2019-04-22 01:31:26 +09:00
return {
acceptContentTypes: state.getIn(['media_attachments', 'accept_content_types']).toArray().join(','),
resetFileKey: state.getIn(['compose', 'resetFileKey']),
hasPoll: !!poll,
allowMedia: !poll && (media ? media.size + pending_media < 4 && !media.some(item => ['video', 'audio'].includes(item.get('type'))) : pending_media < 4),
2019-04-22 01:31:26 +09:00
hasMedia: media && !!media.size,
allowPoll: !(media && !!media.size),
2019-05-13 04:55:44 +09:00
showContentTypeChoice: state.getIn(['local_settings', 'show_content_type_choice']),
contentType: state.getIn(['compose', 'content_type']),
2019-04-22 01:31:26 +09:00
};
};
const mapDispatchToProps = (dispatch) => ({
onChangeAdvancedOption(option, value) {
dispatch(changeComposeAdvancedOption(option, value));
},
onChangeContentType(value) {
dispatch(changeComposeContentType(value));
},
2019-04-22 01:31:26 +09:00
onTogglePoll() {
dispatch((_, getState) => {
if (getState().getIn(['compose', 'poll'])) {
dispatch(removePoll());
} else {
dispatch(addPoll());
}
});
},
onDoodleOpen() {
dispatch(openModal('DOODLE', { noEsc: true }));
},
});
export default connect(mapStateToProps, mapDispatchToProps)(Options);