Files
2025-10-12 13:42:02 +02:00

57 lines
1.7 KiB
JavaScript

import { connect } from "react-redux";
import {
changeComposeAdvancedOption,
changeComposeContentType,
addPoll,
removePoll,
} from "flavours/glitch/actions/compose";
import { openModal } from "flavours/glitch/actions/modal";
import Options from "../components/options";
function mapStateToProps (state) {
const poll = state.getIn(["compose", "poll"]);
const media = state.getIn(["compose", "media_attachments"]);
const pending_media = state.getIn(["compose", "pending_media_attachments"]);
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),
allowPoll: !(media && !!media.size),
showContentTypeChoice: state.getIn(["local_settings", "show_content_type_choice"]),
contentType: state.getIn(["compose", "content_type"]),
};
}
const mapDispatchToProps = (dispatch) => ({
onChangeAdvancedOption(option, value) {
dispatch(changeComposeAdvancedOption(option, value));
},
onChangeContentType(value) {
dispatch(changeComposeContentType(value));
},
onTogglePoll() {
dispatch((_, getState) => {
if (getState().getIn(["compose", "poll"])) {
dispatch(removePoll());
} else {
dispatch(addPoll());
}
});
},
onDoodleOpen() {
dispatch(openModal({
modalType: "DOODLE",
modalProps: { noEsc: true, noClose: true },
}));
},
});
export default connect(mapStateToProps, mapDispatchToProps)(Options);