From d0e5fc9c5d0f94fb16ab5c54aea2f0339efd5a81 Mon Sep 17 00:00:00 2001 From: Yash Sarvaiya Date: Wed, 4 Nov 2026 22:04:29 +0530 Subject: [PATCH] fix(react): handle network failure and prevent UI freeze in ChatInput --- .../react/src/views/ChatInput/ChatInput.js | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/packages/react/src/views/ChatInput/ChatInput.js b/packages/react/src/views/ChatInput/ChatInput.js index 309ca918f..09156f0d9 100644 --- a/packages/react/src/views/ChatInput/ChatInput.js +++ b/packages/react/src/views/ChatInput/ChatInput.js @@ -396,20 +396,31 @@ const ChatInput = ({ scrollToBottom, clearUnreadDividerRef }) => { upsertMessage(pendingMessage, ECOptions.enableThreads); - const res = await RCInstance.sendMessage( - { - msg: pendingMessage.msg, - _id: pendingMessage._id, - }, - ECOptions.enableThreads ? threadId : undefined - ); + try { + const res = await RCInstance.sendMessage( + { + msg: pendingMessage.msg, + _id: pendingMessage._id, + }, + ECOptions.enableThreads ? threadId : undefined + ); - if (res?.success) { - clearQuoteMessages(); - replaceMessage(pendingMessage._id, res.message); - } else { - // If REST send failed, remove the pending message so it doesn't stay grey + if (res?.success) { + clearQuoteMessages(); + replaceMessage(pendingMessage._id, res.message); + } else { + removeMessage(pendingMessage._id); + dispatchToastMessage({ + type: 'error', + message: 'Failed to send message', + }); + } + } catch (error) { removeMessage(pendingMessage._id); + dispatchToastMessage({ + type: 'error', + message: error?.message || 'Error sending message', + }); } };