From 4a2b7eb7fd1240763fe2e27ba52b5a2dfc7ee3bd Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Thu, 27 Jul 2023 11:48:39 +0200 Subject: [PATCH] Forwards: Fix message order jumps (#3673) --- src/global/actions/api/messages.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/global/actions/api/messages.ts b/src/global/actions/api/messages.ts index b4b7c513c..eb667e34f 100644 --- a/src/global/actions/api/messages.ts +++ b/src/global/actions/api/messages.ts @@ -108,12 +108,10 @@ import { ensureProtocol } from '../../../util/ensureProtocol'; import { updateTabState } from '../../reducers/tabs'; import { getCurrentTabId } from '../../../util/establishMultitabRole'; import { deleteMessages } from '../apiUpdaters/messages'; -import Deferred from '../../../util/Deferred'; const AUTOLOGIN_TOKEN_KEY = 'autologin_token'; const uploadProgressCallbacks = new Map(); -let lastSendMessageDeferred = Deferred.resolved(); const runDebouncedForMarkRead = debounce((cb) => cb(), 500, false); @@ -804,8 +802,8 @@ addActionHandler('forwardMessages', (global, actions, payload): ActionReturnType const realMessages = messages.filter((m) => !isServiceNotificationMessage(m)); if (realMessages.length) { (async () => { - await lastSendMessageDeferred.promise; - await callApi('forwardMessages', { + await rafPromise(); // Wait one frame for any previous `sendMessage` to be processed + callApi('forwardMessages', { fromChat, toChat, toThreadId, @@ -1176,7 +1174,6 @@ async function sendMessage(global: T, params: { replyingToTopId?: number; groupedId?: string; }) { - lastSendMessageDeferred = new Deferred(); let localId: number | undefined; const progressCallback = params.attachment ? (progress: number, messageLocalId: number) => { if (!uploadProgressCallbacks.has(messageLocalId)) { @@ -1221,8 +1218,6 @@ async function sendMessage(global: T, params: { if (progressCallback && localId) { uploadProgressCallbacks.delete(localId); } - - lastSendMessageDeferred.resolve(); } addActionHandler('loadPinnedMessages', async (global, actions, payload): Promise => {