From 76a577afb37dbbb81bb80e31ef7e6990e66b118d Mon Sep 17 00:00:00 2001 From: Evgeny Date: Sat, 5 Sep 2026 11:03:57 +0100 Subject: [PATCH] core: use file expiration time when sending history (#7454) * core: use file expiration time when sending history * simplify --------- Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com> --- src/Simplex/Chat/Library/Internal.hs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Simplex/Chat/Library/Internal.hs b/src/Simplex/Chat/Library/Internal.hs index b9b29c7079..79b4578d8f 100644 --- a/src/Simplex/Chat/Library/Internal.hs +++ b/src/Simplex/Chat/Library/Internal.hs @@ -1418,16 +1418,16 @@ sendHistory user gInfo@GroupInfo {membership} m@GroupMember {activeConn = Just c cxt <- chatStoreCxt eitherToMaybe <$> withStore' (\db -> runExceptT $ getGroupMemberById db cxt user gmId) getRcvFileInvDescr :: CIFile 'MDRcv -> CM (Maybe (FileInvitation, RcvFileDescrText, Maybe UTCTime)) - getRcvFileInvDescr ciFile@CIFile {fileId, fileProtocol, fileStatus} = do - expired <- fileExpired + getRcvFileInvDescr ciFile@CIFile {fileId, fileProtocol, fileStatus, fileExpires} = do + expired <- fileExpired fileExpires if fileProtocol /= FPXFTP || fileStatus == CIFSRcvCancelled || expired then pure Nothing else do rfd <- withStore $ \db -> getRcvFileDescrByRcvFileId db fileId pure $ invCompleteDescr ciFile rfd getSndFileInvDescr :: CIFile 'MDSnd -> CM (Maybe (FileInvitation, RcvFileDescrText, Maybe UTCTime)) - getSndFileInvDescr ciFile@CIFile {fileId, fileProtocol, fileStatus} = do - expired <- fileExpired + getSndFileInvDescr ciFile@CIFile {fileId, fileProtocol, fileStatus, fileExpires} = do + expired <- fileExpired fileExpires if fileProtocol /= FPXFTP || fileStatus == CIFSSndCancelled || expired then pure Nothing else do @@ -1435,11 +1435,11 @@ sendHistory user gInfo@GroupInfo {membership} m@GroupMember {activeConn = Just c -- would be best if snd file had a single rcv description for all members saved in files table rfd <- withStore $ \db -> getRcvFileDescrBySndFileId db fileId pure $ invCompleteDescr ciFile rfd - fileExpired :: CM Bool - fileExpired = do + fileExpired :: Maybe UTCTime -> CM Bool + fileExpired fileExpires = do ttl <- asks $ rcvFilesTTL . agentConfig . config - cutoffTs <- addUTCTime (-ttl) <$> liftIO getCurrentTime - pure $ chatItemTs cci < cutoffTs + now <- liftIO getCurrentTime + pure $ fromMaybe (addUTCTime ttl $ chatItemTs cci) fileExpires < now invCompleteDescr :: CIFile d -> RcvFileDescr -> Maybe (FileInvitation, RcvFileDescrText, Maybe UTCTime) invCompleteDescr CIFile {fileName, fileSize, fileExpires} RcvFileDescr {fileDescrText, fileDescrComplete} | fileDescrComplete =