From 735bc150113e6a35318d021ec9e91c6e2a226a77 Mon Sep 17 00:00:00 2001 From: Ajay Bura <32841439+ajbura@users.noreply.github.com> Date: Mon, 11 May 2026 22:59:43 +1000 Subject: [PATCH] fix: empty heading crash on edit msg (#2929) * fix crash when editing message with empty trailing heading * remove unused imports --- src/app/components/CallEmbedProvider.tsx | 1 - src/app/components/editor/input.ts | 8 ++++---- src/app/components/editor/output.ts | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/app/components/CallEmbedProvider.tsx b/src/app/components/CallEmbedProvider.tsx index b50b1f5..a78c210 100644 --- a/src/app/components/CallEmbedProvider.tsx +++ b/src/app/components/CallEmbedProvider.tsx @@ -1,6 +1,5 @@ import React, { ReactNode, useCallback, useRef } from 'react'; import { useAtomValue, useSetAtom } from 'jotai'; -import { config } from 'folds'; import { CallEmbedContextProvider, CallEmbedRefContextProvider, diff --git a/src/app/components/editor/input.ts b/src/app/components/editor/input.ts index b56e46e..1af30a7 100644 --- a/src/app/components/editor/input.ts +++ b/src/app/components/editor/input.ts @@ -193,7 +193,7 @@ const parseBlockquoteNode = ( if (child.name === 'p') { appendLine(); - quoteLines.push(child.children.flatMap((c) => getInlineElement(c, processText))); + quoteLines.push(getInlineElement(child, processText)); return; } @@ -283,7 +283,7 @@ const parseListNode = ( if (child.name === 'li') { appendLine(); - listLines.push(child.children.flatMap((c) => getInlineElement(c, processText))); + listLines.push(getInlineElement(child, processText)); return; } @@ -331,7 +331,7 @@ const parseHeadingNode = ( node: Element, processText: ProcessTextCallback ): HeadingElement | ParagraphElement => { - const children = node.children.flatMap((child) => getInlineElement(child, processText)); + const children = getInlineElement(node, processText); const headingMatch = node.name.match(/^h([123456])$/); const [, g1AsLevel] = headingMatch ?? ['h3', '3']; @@ -394,7 +394,7 @@ export const domToEditorInput = ( appendLine(); children.push({ type: BlockType.Paragraph, - children: node.children.flatMap((child) => getInlineElement(child, processText)), + children: getInlineElement(node, processText), }); return; } diff --git a/src/app/components/editor/output.ts b/src/app/components/editor/output.ts index 5310012..2942a83 100644 --- a/src/app/components/editor/output.ts +++ b/src/app/components/editor/output.ts @@ -11,7 +11,7 @@ import { } from '../../plugins/markdown'; import { findAndReplace } from '../../utils/findAndReplace'; import { sanitizeForRegex } from '../../utils/regex'; -import { getCanonicalAliasOrRoomId, isUserId } from '../../utils/matrix'; +import { isUserId } from '../../utils/matrix'; export type OutputOptions = { allowTextFormatting?: boolean; @@ -215,7 +215,7 @@ export const getMentions = (mx: MatrixClient, roomId: string, editor: Editor): M if (node.name === '@room') { mentionData.room = true; } - + if (isUserId(node.id) && node.id !== mx.getUserId()) { mentionData.users.add(node.id); }