From 72d817c93761155c581d576a1a5445793354eb09 Mon Sep 17 00:00:00 2001 From: JRoberts <8711996+jr-simplex@users.noreply.github.com> Date: Mon, 23 Jan 2023 16:09:39 +0400 Subject: [PATCH] core: optional connection id in RcvFileInfo --- src/Simplex/Chat.hs | 4 ++-- src/Simplex/Chat/Store.hs | 12 ++---------- src/Simplex/Chat/Types.hs | 7 ++++--- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 524d05ac8a..a1f2df61e2 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -3291,9 +3291,9 @@ cancelRcvFileTransfer user ft@RcvFileTransfer {fileId, fileStatus, rcvFileInline updateRcvFileStatus db ft FSCancelled deleteRcvFileChunks db ft when (isNothing rcvFileInline) $ case fileStatus of - RFSAccepted RcvFileInfo {connId, agentConnId} -> + RFSAccepted RcvFileInfo {connId = Just connId, agentConnId = Just agentConnId} -> deleteAgentConnectionAsync' user connId agentConnId - RFSConnected RcvFileInfo {connId, agentConnId} -> + RFSConnected RcvFileInfo {connId = Just connId, agentConnId = Just agentConnId} -> deleteAgentConnectionAsync' user connId agentConnId _ -> pure () diff --git a/src/Simplex/Chat/Store.hs b/src/Simplex/Chat/Store.hs index fd5e27b773..f950b61367 100644 --- a/src/Simplex/Chat/Store.hs +++ b/src/Simplex/Chat/Store.hs @@ -2743,7 +2743,7 @@ createRcvGroupFileTransfer db userId GroupMember {groupId, groupMemberId, localD pure RcvFileTransfer {fileId, fileInvitation = f, fileStatus = RFSNew, rcvFileInline, senderDisplayName = c, chunkSize, cancelled = False, grpMemberId = Just groupMemberId} getRcvFileTransfer :: DB.Connection -> User -> Int64 -> ExceptT StoreError IO RcvFileTransfer -getRcvFileTransfer db user@User {userId} fileId = do +getRcvFileTransfer db User {userId} fileId = do rftRow <- ExceptT . firstRow id (SERcvFileNotFound fileId) $ DB.query @@ -2782,15 +2782,7 @@ getRcvFileTransfer db user@User {userId} fileId = do RcvFileTransfer {fileId, fileInvitation, fileStatus, rcvFileInline, senderDisplayName, chunkSize, cancelled, grpMemberId} rfi fileInfo = maybe (throwError $ SERcvFileInvalid fileId) pure =<< rfi_ fileInfo rfi_ = \case - (Just filePath, Just connId, Just agentConnId, _, _, _, _) -> pure $ Just RcvFileInfo {filePath, connId, agentConnId} - (Just filePath, Nothing, Nothing, Just contactId, _, _, True) -> do - Contact {activeConn = Connection {connId, agentConnId}} <- getContact db user contactId - pure $ Just RcvFileInfo {filePath, connId, agentConnId} - (Just filePath, Nothing, Nothing, _, Just groupId, Just groupMemberId, True) -> do - getGroupMember db user groupId groupMemberId >>= \case - GroupMember {activeConn = Just Connection {connId, agentConnId}} -> - pure $ Just RcvFileInfo {filePath, connId, agentConnId} - _ -> pure Nothing + (Just filePath, connId, agentConnId, _, _, _, _) -> pure $ Just RcvFileInfo {filePath, connId, agentConnId} _ -> pure Nothing cancelled = fromMaybe False cancelled_ diff --git a/src/Simplex/Chat/Types.hs b/src/Simplex/Chat/Types.hs index bf884b7fa6..2fc46aa11b 100644 --- a/src/Simplex/Chat/Types.hs +++ b/src/Simplex/Chat/Types.hs @@ -1481,8 +1481,8 @@ instance ToJSON RcvFileStatus where data RcvFileInfo = RcvFileInfo { filePath :: FilePath, - connId :: Int64, - agentConnId :: AgentConnId + connId :: Maybe Int64, + agentConnId :: Maybe AgentConnId } deriving (Eq, Show, Generic) @@ -1494,7 +1494,8 @@ liveRcvFileTransferConnId RcvFileTransfer {fileStatus} = case fileStatus of RFSConnected fi -> acId fi _ -> Nothing where - acId RcvFileInfo {agentConnId = AgentConnId cId} = Just cId + acId RcvFileInfo {agentConnId = Just (AgentConnId cId)} = Just cId + acId _ = Nothing newtype AgentConnId = AgentConnId ConnId deriving (Eq, Show)