From fa5529fc154193abde496610557535af9c20cfb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marcin=20miko=C5=82ajczak?= Date: Mon, 31 Jul 2023 01:06:14 +0200 Subject: [PATCH] Lexical: Make Lexical editor optional MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- app/soapbox/actions/settings.ts | 1 + .../components/autosuggest-textarea.tsx | 2 +- .../compose/components/compose-form.tsx | 133 +++++++++++++----- .../compose/components/markdown-button.tsx | 37 +++++ .../features/developers/settings-store.tsx | 6 + app/soapbox/schemas/soapbox/settings.ts | 3 +- 6 files changed, 146 insertions(+), 36 deletions(-) create mode 100644 app/soapbox/features/compose/components/markdown-button.tsx diff --git a/app/soapbox/actions/settings.ts b/app/soapbox/actions/settings.ts index 1e5c241d1..97925400c 100644 --- a/app/soapbox/actions/settings.ts +++ b/app/soapbox/actions/settings.ts @@ -48,6 +48,7 @@ const defaultSettings = ImmutableMap({ systemFont: false, demetricator: false, + wysiwyg: false, isDeveloper: false, diff --git a/app/soapbox/components/autosuggest-textarea.tsx b/app/soapbox/components/autosuggest-textarea.tsx index 762aee29a..e0be3c958 100644 --- a/app/soapbox/components/autosuggest-textarea.tsx +++ b/app/soapbox/components/autosuggest-textarea.tsx @@ -237,7 +237,7 @@ class AutosuggestTextarea extends ImmutablePureComponent } return [ -
+
+ autoFocus={shouldAutoFocus} + condensed={condensed} + id='compose-textarea' + > + {composeModifiers} + + )} diff --git a/app/soapbox/features/compose/components/markdown-button.tsx b/app/soapbox/features/compose/components/markdown-button.tsx new file mode 100644 index 000000000..31314f525 --- /dev/null +++ b/app/soapbox/features/compose/components/markdown-button.tsx @@ -0,0 +1,37 @@ +import React from 'react'; +import { defineMessages, useIntl } from 'react-intl'; + +import { changeComposeContentType } from 'soapbox/actions/compose'; +import { useAppDispatch, useCompose } from 'soapbox/hooks'; + +import ComposeFormButton from './compose-form-button'; + +const messages = defineMessages({ + marked: { id: 'compose_form.markdown.marked', defaultMessage: 'Post markdown enabled' }, + unmarked: { id: 'compose_form.markdown.unmarked', defaultMessage: 'Post markdown disabled' }, +}); + +interface IMarkdownButton { + composeId: string +} + +const MarkdownButton: React.FC = ({ composeId }) => { + const intl = useIntl(); + const dispatch = useAppDispatch(); + + const active = useCompose(composeId).content_type === 'text/markdown'; + + const onClick = () => dispatch(changeComposeContentType(composeId, active ? 'text/plain' : 'text/markdown')); + + return ( + + ); + +}; + +export default MarkdownButton; diff --git a/app/soapbox/features/developers/settings-store.tsx b/app/soapbox/features/developers/settings-store.tsx index 828ee8d42..f5ea1ab17 100644 --- a/app/soapbox/features/developers/settings-store.tsx +++ b/app/soapbox/features/developers/settings-store.tsx @@ -140,6 +140,12 @@ const SettingsStore: React.FC = () => { > + + } + > + + ); diff --git a/app/soapbox/schemas/soapbox/settings.ts b/app/soapbox/schemas/soapbox/settings.ts index 1b0db4d86..4a1027e31 100644 --- a/app/soapbox/schemas/soapbox/settings.ts +++ b/app/soapbox/schemas/soapbox/settings.ts @@ -28,9 +28,10 @@ const settingsSchema = z.object({ autoloadMore: z.boolean().catch(true), systemFont: z.boolean().catch(false), demetricator: z.boolean().catch(false), + wysiwyg: z.boolean().catch(false), isDeveloper: z.boolean().catch(false), }); type Settings = z.infer; -export { settingsSchema, type Settings }; \ No newline at end of file +export { settingsSchema, type Settings };