Skip to content

Commit a223bd6

Browse files
committed
fix: critical message state mutation issue
1 parent c283f8b commit a223bd6

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

package/src/components/Channel/Channel.tsx

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1392,30 +1392,32 @@ const ChannelWithContext = (props: PropsWithChildren<ChannelPropsWithContext>) =
13921392
}
13931393

13941394
if (messageResponse.message) {
1395-
messageResponse.message.status = MessageStatusTypes.RECEIVED;
1395+
const newMessageResponse = {
1396+
...messageResponse.message,
1397+
status: MessageStatusTypes.RECEIVED,
1398+
};
13961399

13971400
if (enableOfflineSupport) {
13981401
await dbApi.updateMessage({
1399-
message: { ...messageResponse.message, cid: channel.cid },
1402+
message: { ...newMessageResponse, cid: channel.cid },
14001403
});
14011404
}
14021405
if (retrying) {
1403-
replaceMessage(message, messageResponse.message);
1406+
replaceMessage(message, newMessageResponse);
14041407
} else {
1405-
updateMessage(messageResponse.message, {}, true);
1408+
updateMessage(newMessageResponse, {}, true);
14061409
}
14071410
}
14081411
} catch (err) {
14091412
console.log(err);
1410-
message.status = MessageStatusTypes.FAILED;
1411-
const updatedMessage = { ...message, cid: channel.cid };
1413+
const updatedMessage = { ...message, cid: channel.cid, status: MessageStatusTypes.FAILED };
14121414
updateMessage(updatedMessage);
14131415
threadInstance?.upsertReplyLocally?.({ message: updatedMessage });
14141416
optimisticallyUpdatedNewMessages.delete(message.id);
14151417

14161418
if (enableOfflineSupport) {
14171419
await dbApi.updateMessage({
1418-
message: { ...message, cid: channel.cid },
1420+
message: updatedMessage,
14191421
});
14201422
}
14211423
}

0 commit comments

Comments
 (0)