From f34a402a94bd5a0c9860165ff50c93b300fd1756 Mon Sep 17 00:00:00 2001 From: KokaKiwi Date: Sun, 17 Feb 2019 23:53:51 +0100 Subject: Add status content type dropdown to compose box. Signed-off-by: Thibaut Girka --- .../features/compose/components/compose_form.js | 7 +++ .../glitch/features/compose/components/options.js | 51 ++++++++++++++++++++++ 2 files changed, 58 insertions(+) (limited to 'app/javascript/flavours/glitch/features/compose/components') diff --git a/app/javascript/flavours/glitch/features/compose/components/compose_form.js b/app/javascript/flavours/glitch/features/compose/components/compose_form.js index e8f000b1e..4e93e2d84 100644 --- a/app/javascript/flavours/glitch/features/compose/components/compose_form.js +++ b/app/javascript/flavours/glitch/features/compose/components/compose_form.js @@ -38,6 +38,7 @@ class ComposeForm extends ImmutablePureComponent { suggestions: ImmutablePropTypes.list, spoiler: PropTypes.bool, privacy: PropTypes.string, + contentType: PropTypes.string, spoilerText: PropTypes.string, focusDate: PropTypes.instanceOf(Date), caretPosition: PropTypes.number, @@ -66,6 +67,7 @@ class ComposeForm extends ImmutablePureComponent { preselectOnReply: PropTypes.bool, onChangeSpoilerness: PropTypes.func, onChangeVisibility: PropTypes.func, + onChangeContentType: PropTypes.func, onMount: PropTypes.func, onUnmount: PropTypes.func, onPaste: PropTypes.func, @@ -285,10 +287,12 @@ class ComposeForm extends ImmutablePureComponent { media, onChangeSpoilerness, onChangeVisibility, + onChangeContentType, onClearSuggestions, onFetchSuggestions, onPaste, privacy, + contentType, sensitive, showSearch, sideArm, @@ -356,9 +360,11 @@ class ComposeForm extends ImmutablePureComponent { advancedOptions={advancedOptions} disabled={isSubmitting} onChangeVisibility={onChangeVisibility} + onChangeContentType={onChangeContentType} onToggleSpoiler={spoilersAlwaysOn ? null : onChangeSpoilerness} onUpload={onPaste} privacy={privacy} + contentType={contentType} sensitive={sensitive || (spoilersAlwaysOn && spoilerText && spoilerText.length > 0)} spoiler={spoilersAlwaysOn ? (spoilerText && spoilerText.length > 0) : spoiler} /> @@ -369,6 +375,7 @@ class ComposeForm extends ImmutablePureComponent { onSecondarySubmit={handleSecondarySubmit} onSubmit={handleSubmit} privacy={privacy} + contentType={contentType} sideArm={sideArm} /> diff --git a/app/javascript/flavours/glitch/features/compose/components/options.js b/app/javascript/flavours/glitch/features/compose/components/options.js index ee9730961..908126c6f 100644 --- a/app/javascript/flavours/glitch/features/compose/components/options.js +++ b/app/javascript/flavours/glitch/features/compose/components/options.js @@ -29,6 +29,10 @@ const messages = defineMessages({ defaultMessage: 'Adjust status privacy', id: 'privacy.change', }, + content_type: { + defaultMessage: 'Content type', + id: 'content-type.change', + }, direct_long: { defaultMessage: 'Post to mentioned users only', id: 'privacy.direct.long', @@ -41,6 +45,10 @@ const messages = defineMessages({ defaultMessage: 'Draw something', id: 'compose.attach.doodle', }, + html: { + defaultMessage: 'HTML', + id: 'compose.content-type.html', + }, local_only_long: { defaultMessage: 'Do not post to other instances', id: 'advanced_options.local-only.long', @@ -49,6 +57,14 @@ const messages = defineMessages({ defaultMessage: 'Local-only', id: 'advanced_options.local-only.short', }, + markdown: { + defaultMessage: 'Markdown', + id: 'compose.content-type.markdown', + }, + plain: { + defaultMessage: 'Plain text', + id: 'compose.content-type.plain', + }, private_long: { defaultMessage: 'Post to followers only', id: 'privacy.private.long', @@ -113,6 +129,7 @@ class ComposerOptions extends ImmutablePureComponent { intl: PropTypes.object.isRequired, onChangeAdvancedOption: PropTypes.func, onChangeVisibility: PropTypes.func, + onChangeContentType: PropTypes.func, onTogglePoll: PropTypes.func, onDoodleOpen: PropTypes.func, onModalClose: PropTypes.func, @@ -120,6 +137,7 @@ class ComposerOptions extends ImmutablePureComponent { onToggleSpoiler: PropTypes.func, onUpload: PropTypes.func, privacy: PropTypes.string, + contentType: PropTypes.string, resetFileKey: PropTypes.number, spoiler: PropTypes.bool, }; @@ -162,6 +180,7 @@ class ComposerOptions extends ImmutablePureComponent { const { acceptContentTypes, advancedOptions, + contentType, disabled, allowMedia, hasMedia, @@ -169,6 +188,7 @@ class ComposerOptions extends ImmutablePureComponent { hasPoll, intl, onChangeAdvancedOption, + onChangeContentType, onChangeVisibility, onTogglePoll, onModalClose, @@ -208,6 +228,24 @@ class ComposerOptions extends ImmutablePureComponent { }, }; + const contentTypeItems = { + plain: { + icon: 'file', + name: 'text/plain', + text: , + }, + html: { + icon: 'file-text', + name: 'text/html', + text: , + }, + markdown: { + icon: 'file-text', + name: 'text/markdown', + text: , + }, + }; + // The result. return (
@@ -272,6 +310,19 @@ class ComposerOptions extends ImmutablePureComponent { title={intl.formatMessage(messages.change_privacy)} value={privacy} /> + {onToggleSpoiler && ( Date: Fri, 1 Mar 2019 11:45:16 +0100 Subject: Content-Type Dropdown: use the selected option icon for the menu Signed-off-by: Thibaut Girka --- .../flavours/glitch/features/compose/components/options.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'app/javascript/flavours/glitch/features/compose/components') diff --git a/app/javascript/flavours/glitch/features/compose/components/options.js b/app/javascript/flavours/glitch/features/compose/components/options.js index 908126c6f..9bec36a7d 100644 --- a/app/javascript/flavours/glitch/features/compose/components/options.js +++ b/app/javascript/flavours/glitch/features/compose/components/options.js @@ -230,17 +230,17 @@ class ComposerOptions extends ImmutablePureComponent { const contentTypeItems = { plain: { - icon: 'file', + icon: 'align-left', name: 'text/plain', text: , }, html: { - icon: 'file-text', + icon: 'code', name: 'text/html', text: , }, markdown: { - icon: 'file-text', + icon: 'arrow-circle-down', name: 'text/markdown', text: , }, @@ -311,7 +311,8 @@ class ComposerOptions extends ImmutablePureComponent { value={privacy} /> Date: Sun, 12 May 2019 21:55:44 +0200 Subject: Hide content-type dropdown by default --- .../glitch/features/compose/components/options.js | 32 ++++++++++++---------- .../compose/containers/options_container.js | 1 + .../glitch/features/local_settings/page/index.js | 8 ++++++ .../flavours/glitch/reducers/local_settings.js | 1 + 4 files changed, 28 insertions(+), 14 deletions(-) (limited to 'app/javascript/flavours/glitch/features/compose/components') diff --git a/app/javascript/flavours/glitch/features/compose/components/options.js b/app/javascript/flavours/glitch/features/compose/components/options.js index 9bec36a7d..0c94f5514 100644 --- a/app/javascript/flavours/glitch/features/compose/components/options.js +++ b/app/javascript/flavours/glitch/features/compose/components/options.js @@ -140,6 +140,7 @@ class ComposerOptions extends ImmutablePureComponent { contentType: PropTypes.string, resetFileKey: PropTypes.number, spoiler: PropTypes.bool, + showContentTypeChoice: PropTypes.bool, }; // Handles file selection. @@ -197,6 +198,7 @@ class ComposerOptions extends ImmutablePureComponent { privacy, resetFileKey, spoiler, + showContentTypeChoice, } = this.props; // We predefine our privacy items so that we can easily pick the @@ -310,20 +312,22 @@ class ComposerOptions extends ImmutablePureComponent { title={intl.formatMessage(messages.change_privacy)} value={privacy} /> - + {showContentTypeChoice && ( + + )} {onToggleSpoiler && ( item.get('type') === 'video') : true), hasMedia: media && !!media.size, allowPoll: !(media && !!media.size), + showContentTypeChoice: state.getIn(['local_settings', 'show_content_type_choice']), }; }; diff --git a/app/javascript/flavours/glitch/features/local_settings/page/index.js b/app/javascript/flavours/glitch/features/local_settings/page/index.js index a13bffa3a..cd2d86713 100644 --- a/app/javascript/flavours/glitch/features/local_settings/page/index.js +++ b/app/javascript/flavours/glitch/features/local_settings/page/index.js @@ -151,6 +151,14 @@ export default class LocalSettingsPage extends React.PureComponent { > + + + Date: Mon, 20 May 2019 10:05:11 +0200 Subject: Refactor contentType selection in glitch composer --- .../flavours/glitch/features/compose/components/compose_form.js | 7 ------- .../glitch/features/compose/containers/compose_form_container.js | 6 ------ .../glitch/features/compose/containers/options_container.js | 9 ++++++++- 3 files changed, 8 insertions(+), 14 deletions(-) (limited to 'app/javascript/flavours/glitch/features/compose/components') diff --git a/app/javascript/flavours/glitch/features/compose/components/compose_form.js b/app/javascript/flavours/glitch/features/compose/components/compose_form.js index 4e93e2d84..e8f000b1e 100644 --- a/app/javascript/flavours/glitch/features/compose/components/compose_form.js +++ b/app/javascript/flavours/glitch/features/compose/components/compose_form.js @@ -38,7 +38,6 @@ class ComposeForm extends ImmutablePureComponent { suggestions: ImmutablePropTypes.list, spoiler: PropTypes.bool, privacy: PropTypes.string, - contentType: PropTypes.string, spoilerText: PropTypes.string, focusDate: PropTypes.instanceOf(Date), caretPosition: PropTypes.number, @@ -67,7 +66,6 @@ class ComposeForm extends ImmutablePureComponent { preselectOnReply: PropTypes.bool, onChangeSpoilerness: PropTypes.func, onChangeVisibility: PropTypes.func, - onChangeContentType: PropTypes.func, onMount: PropTypes.func, onUnmount: PropTypes.func, onPaste: PropTypes.func, @@ -287,12 +285,10 @@ class ComposeForm extends ImmutablePureComponent { media, onChangeSpoilerness, onChangeVisibility, - onChangeContentType, onClearSuggestions, onFetchSuggestions, onPaste, privacy, - contentType, sensitive, showSearch, sideArm, @@ -360,11 +356,9 @@ class ComposeForm extends ImmutablePureComponent { advancedOptions={advancedOptions} disabled={isSubmitting} onChangeVisibility={onChangeVisibility} - onChangeContentType={onChangeContentType} onToggleSpoiler={spoilersAlwaysOn ? null : onChangeSpoilerness} onUpload={onPaste} privacy={privacy} - contentType={contentType} sensitive={sensitive || (spoilersAlwaysOn && spoilerText && spoilerText.length > 0)} spoiler={spoilersAlwaysOn ? (spoilerText && spoilerText.length > 0) : spoiler} /> @@ -375,7 +369,6 @@ class ComposeForm extends ImmutablePureComponent { onSecondarySubmit={handleSecondarySubmit} onSubmit={handleSubmit} privacy={privacy} - contentType={contentType} sideArm={sideArm} />
diff --git a/app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js b/app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js index ce5c3afb3..814f9a97a 100644 --- a/app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js +++ b/app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js @@ -6,7 +6,6 @@ import { changeComposeSpoilerText, changeComposeSpoilerness, changeComposeVisibility, - changeComposeContentType, clearComposeSuggestions, fetchComposeSuggestions, insertEmojiCompose, @@ -58,7 +57,6 @@ function mapStateToProps (state) { media: state.getIn(['compose', 'media_attachments']), preselectDate: state.getIn(['compose', 'preselectDate']), privacy: state.getIn(['compose', 'privacy']), - contentType: state.getIn(['compose', 'content_type']), sideArm: sideArmPrivacy, sensitive: state.getIn(['compose', 'sensitive']), showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']), @@ -100,10 +98,6 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ dispatch(changeComposeSpoilerText(text)); }, - onChangeContentType(value) { - dispatch(changeComposeContentType(value)); - }, - onPaste(files) { dispatch(uploadCompose(files)); }, diff --git a/app/javascript/flavours/glitch/features/compose/containers/options_container.js b/app/javascript/flavours/glitch/features/compose/containers/options_container.js index a9ad3a5e8..c8c7ecd43 100644 --- a/app/javascript/flavours/glitch/features/compose/containers/options_container.js +++ b/app/javascript/flavours/glitch/features/compose/containers/options_container.js @@ -2,8 +2,10 @@ import { connect } from 'react-redux'; import Options from '../components/options'; import { changeComposeAdvancedOption, + changeComposeContentType, + addPoll, + removePoll, } from 'flavours/glitch/actions/compose'; -import { addPoll, removePoll } from 'flavours/glitch/actions/compose'; import { closeModal, openModal } from 'flavours/glitch/actions/modal'; function mapStateToProps (state) { @@ -18,6 +20,7 @@ function mapStateToProps (state) { hasMedia: media && !!media.size, allowPoll: !(media && !!media.size), showContentTypeChoice: state.getIn(['local_settings', 'show_content_type_choice']), + contentType: state.getIn(['compose', 'content_type']), }; }; @@ -27,6 +30,10 @@ const mapDispatchToProps = (dispatch) => ({ dispatch(changeComposeAdvancedOption(option, value)); }, + onChangeContentType(value) { + dispatch(changeComposeContentType(value)); + }, + onTogglePoll() { dispatch((_, getState) => { if (getState().getIn(['compose', 'poll'])) { -- cgit