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(() => {