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