From 938bd56c3adaee98d096f8d648f400ca1d2860f0 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Mon, 17 Jul 2023 15:25:32 +0400 Subject: [PATCH] core: check item status is not already SndRcvd before updating to SndSent (#2708) --- src/Simplex/Chat.hs | 1 + src/Simplex/Chat/Messages.hs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index b9feeb576b..03e8c2df15 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -2870,6 +2870,7 @@ processAgentMessageConn user@User {userId} corrId agentConnId agentMessage = do sentMsgDeliveryEvent conn msgId checkSndInlineFTComplete conn msgId withStore' (\db -> getDirectChatItemByAgentMsgId db user contactId connId msgId) >>= \case + Just (CChatItem SMDSnd ChatItem {meta = CIMeta {itemStatus = CISSndRcvd _}}) -> pure () Just (CChatItem SMDSnd ci) -> do chatItem <- withStore $ \db -> updateDirectChatItemStatus db user contactId (chatItemId' ci) CISSndSent toView $ CRChatItemStatusUpdated user (AChatItem SCTDirect SMDSnd (DirectChat ct) chatItem) diff --git a/src/Simplex/Chat/Messages.hs b/src/Simplex/Chat/Messages.hs index 2dbac741bb..23baa618ab 100644 --- a/src/Simplex/Chat/Messages.hs +++ b/src/Simplex/Chat/Messages.hs @@ -843,7 +843,7 @@ msgDeliveryStatusT = eitherToMaybe . parseAll statusP . encodeUtf8 "snd_rcvd" -> AMDS SMDSnd . MDSSndRcvd <$> (A.space *> strP) "snd_read" -> pure $ AMDS SMDSnd MDSSndRead _ -> fail "bad AMsgDeliveryStatus" - + msgDeliveryStatusT' :: forall d. MsgDirectionI d => Text -> Maybe (MsgDeliveryStatus d) msgDeliveryStatusT' s = msgDeliveryStatusT s >>= \(AMDS d st) ->