From 1da78fa6bcf05771b8fc9a34e47712747484e3cb Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Mon, 23 Jan 2023 15:36:40 +0100 Subject: [PATCH] Fix RTE focus behaviour in threads --- src/components/views/rooms/MessageComposer.tsx | 5 ++++- .../wysiwyg_composer/hooks/useWysiwygSendActionHandler.ts | 3 +++ .../rooms/wysiwyg_composer/SendWysiwygComposer-test.tsx | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/views/rooms/MessageComposer.tsx b/src/components/views/rooms/MessageComposer.tsx index 2d5f9cc99c6..1e8276ba8f4 100644 --- a/src/components/views/rooms/MessageComposer.tsx +++ b/src/components/views/rooms/MessageComposer.tsx @@ -336,7 +336,10 @@ export class MessageComposer extends React.Component { const { permalinkCreator, relation, replyToEvent } = this.props; const composerContent = this.state.composerContent; this.setState({ composerContent: "", initialComposerContent: "" }); - dis.dispatch({ action: Action.ClearAndFocusSendMessageComposer }); + dis.dispatch({ + action: Action.ClearAndFocusSendMessageComposer, + timelineRenderingType: this.context.timelineRenderingType, + }); await sendMessage(composerContent, this.state.isRichTextEnabled, { mxClient: this.props.mxClient, roomContext: this.context, diff --git a/src/components/views/rooms/wysiwyg_composer/hooks/useWysiwygSendActionHandler.ts b/src/components/views/rooms/wysiwyg_composer/hooks/useWysiwygSendActionHandler.ts index 5cdd0b4e105..40b7e8182cb 100644 --- a/src/components/views/rooms/wysiwyg_composer/hooks/useWysiwygSendActionHandler.ts +++ b/src/components/views/rooms/wysiwyg_composer/hooks/useWysiwygSendActionHandler.ts @@ -50,6 +50,9 @@ export function useWysiwygSendActionHandler( focusComposer(composerElement, context, roomContext, timeoutId); break; case Action.ClearAndFocusSendMessageComposer: + // When a thread is opened, prevent the main composer to steal the thread composer focus + if (payload.timelineRenderingType !== roomContext.timelineRenderingType) break; + composerFunctions.clear(); focusComposer(composerElement, context, roomContext, timeoutId); break; diff --git a/test/components/views/rooms/wysiwyg_composer/SendWysiwygComposer-test.tsx b/test/components/views/rooms/wysiwyg_composer/SendWysiwygComposer-test.tsx index 1a5ba88c46a..7f04bf21ffb 100644 --- a/test/components/views/rooms/wysiwyg_composer/SendWysiwygComposer-test.tsx +++ b/test/components/views/rooms/wysiwyg_composer/SendWysiwygComposer-test.tsx @@ -153,7 +153,7 @@ describe("SendWysiwygComposer", () => { // When we send the right action defaultDispatcher.dispatch({ action: Action.ClearAndFocusSendMessageComposer, - context: null, + timelineRenderingType: defaultRoomContext.timelineRenderingType, }); // Then the component gets the focus