From 2688cd768a8405c7dedff164d5508a2fe700f703 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Fri, 19 Apr 2024 13:38:47 +0400 Subject: [PATCH] Draft: Fix overwriting draft on chat change (#4485) --- src/components/middle/composer/hooks/useDraft.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/components/middle/composer/hooks/useDraft.ts b/src/components/middle/composer/hooks/useDraft.ts index 14dc87550..395c23ce6 100644 --- a/src/components/middle/composer/hooks/useDraft.ts +++ b/src/components/middle/composer/hooks/useDraft.ts @@ -1,4 +1,4 @@ -import { useEffect, useRef } from '../../../../lib/teact/teact'; +import { useEffect, useLayoutEffect, useRef } from '../../../../lib/teact/teact'; import { getActions } from '../../../../global'; import type { ApiMessage } from '../../../../api/types'; @@ -73,10 +73,12 @@ const useDraft = ({ const html = getHtml(); if (html) { - saveDraft({ - chatId: prevState.chatId ?? chatId, - threadId: prevState.threadId ?? threadId, - text: parseHtmlAsFormattedText(html), + requestMeasure(() => { + saveDraft({ + chatId: prevState.chatId ?? chatId, + threadId: prevState.threadId ?? threadId, + text: parseHtmlAsFormattedText(html), + }); }); } else { clearDraft({ @@ -117,8 +119,8 @@ const useDraft = ({ if (customEmojiIds.length) loadCustomEmojis({ ids: customEmojiIds }); }, [chatId, threadId, draft, getHtml, setHtml, editedMessage, isDisabled]); - // Save draft on chat change - useEffect(() => { + // Save draft on chat change. Should be layout effect to read correct html on cleanup + useLayoutEffect(() => { if (isDisabled) { return undefined; }