From 1865c407473a6731c08a5983b51ae11282dd04b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?nicole=20miko=C5=82ajczyk?= Date: Tue, 17 Mar 2026 21:22:08 +0100 Subject: [PATCH] nicolium: allow previewing MFM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nicole mikołajczyk --- .../features/compose/components/compose-form.tsx | 7 ++++++- .../nicolium/src/schemas/frontend-settings.ts | 4 ++-- packages/nicolium/src/stores/compose.ts | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/packages/nicolium/src/features/compose/components/compose-form.tsx b/packages/nicolium/src/features/compose/components/compose-form.tsx index 86fd5728b..eb06bc405 100644 --- a/packages/nicolium/src/features/compose/components/compose-form.tsx +++ b/packages/nicolium/src/features/compose/components/compose-form.tsx @@ -22,6 +22,7 @@ import { } from '@/stores/compose'; import { useInstance } from '@/stores/instance'; import { useModalsActions } from '@/stores/modals'; +import { useSettings } from '@/stores/settings'; import toast from '@/toast'; import PreviewComposeContainer from '../containers/preview-compose-container'; @@ -147,6 +148,7 @@ const ComposeForm = ({ const { configuration } = useInstance(); const { closeModal } = useModalsActions(); const actions = useComposeActions(); + const { renderMfm } = useSettings(); const compose = useCompose(id); const uploadCompose = useUploadCompose(id); @@ -387,7 +389,10 @@ const ComposeForm = ({ const actionsMenu: Menu = []; - if (features.createStatusPreview) { + if ( + features.createStatusPreview || + (renderMfm && compose.contentType === 'text/x.misskeymarkdown') + ) { actionsMenu.push({ text: intl.formatMessage(messages.preview), action: handlePreview, diff --git a/packages/nicolium/src/schemas/frontend-settings.ts b/packages/nicolium/src/schemas/frontend-settings.ts index d610b36b6..5a0ae7eb8 100644 --- a/packages/nicolium/src/schemas/frontend-settings.ts +++ b/packages/nicolium/src/schemas/frontend-settings.ts @@ -10,9 +10,9 @@ const settingsSchema = v.object({ onboarded: v.fallback(v.boolean(), false), skinTone: v.fallback(skinToneSchema, 1), reduceMotion: v.fallback(v.boolean(), false), - renderMfm: v.fallback(v.boolean(), false), + renderMfm: v.fallback(v.boolean(), true), renderAdvancedMfm: v.fallback(v.boolean(), true), - renderAnimatedMfm: v.fallback(v.boolean(), true), + renderAnimatedMfm: v.fallback(v.boolean(), false), underlineLinks: v.fallback(v.boolean(), false), autoPlayGif: v.fallback(v.boolean(), true), displayMedia: v.fallback(v.picklist(['default', 'hide_all', 'show_all']), 'default'), diff --git a/packages/nicolium/src/stores/compose.ts b/packages/nicolium/src/stores/compose.ts index 7c1302a69..5f0e415ca 100644 --- a/packages/nicolium/src/stores/compose.ts +++ b/packages/nicolium/src/stores/compose.ts @@ -714,6 +714,22 @@ const useSubmitCompose = (composeId: string) => { const compose = actions.getCompose(composeId); + if (preview && compose.contentType === 'text/x.misskeymarkdown') { + const data: Partial = { + text: compose.text, + content: compose.text, + spoiler_text: compose.spoilerText, + media_attachments: compose.mediaAttachments, + content_type: 'text/x.misskeymarkdown', + emojis: [], + }; + actions.updateCompose(composeId, (draft) => { + draft.preview = data; + }); + onSuccess?.(); + return; + } + const statusText = compose.text; const media = compose.mediaAttachments; const editedId = compose.editedId;