From def2530492a5333c5b432d150df451e09dcf0d6c Mon Sep 17 00:00:00 2001 From: Anton Arnautov Date: Thu, 23 Jul 2026 11:54:41 +0200 Subject: [PATCH] Initial commit --- .../MessageComposer/MessageComposer.tsx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/components/MessageComposer/MessageComposer.tsx b/src/components/MessageComposer/MessageComposer.tsx index 70888f629..c3d01e1a2 100644 --- a/src/components/MessageComposer/MessageComposer.tsx +++ b/src/components/MessageComposer/MessageComposer.tsx @@ -79,6 +79,10 @@ export type MessageComposerProps = { * ``` */ shouldSubmit?: (event: React.KeyboardEvent) => boolean; + /** + * When set to `true` disables clearing established state of the MessageComposerController upon component unmount. + */ + preventClearingOnUnmount?: boolean; }; const MessageComposerProvider = (props: PropsWithChildren) => { @@ -95,9 +99,17 @@ const MessageComposerProvider = (props: PropsWithChildren) useEffect( () => () => { - messageComposer.createDraft().finally(() => messageComposer.clear()); + if (messageComposer.channel.disconnected) return; + + const promise = messageComposer.config.drafts.enabled + ? messageComposer.createDraft() + : Promise.resolve(); + + if (props.preventClearingOnUnmount) return; + + promise.finally(() => messageComposer.clear()); }, - [messageComposer], + [messageComposer, props.preventClearingOnUnmount], ); useEffect(() => {