From 3bc4fd222c15618f323dabec20ba890d7ab322d1 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Mon, 23 Jan 2023 17:17:42 +0000 Subject: [PATCH] core: fix cancelling sending inline files (#1826) * core: fix cancelling sending inline files * add comments * typos Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com> Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com> --- src/Simplex/Chat.hs | 4 ++-- src/Simplex/Chat/Migrations/M20221012_inline_files.hs | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 87709e38d1..fc948314a5 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -3303,13 +3303,13 @@ cancelSndFile user FileTransferMeta {fileId} fts = do forM_ fts $ \ft' -> cancelSndFileTransfer user ft' cancelSndFileTransfer :: ChatMonad m => User -> SndFileTransfer -> m () -cancelSndFileTransfer user ft@SndFileTransfer {connId, agentConnId = agentConnId@(AgentConnId acId), fileStatus} = +cancelSndFileTransfer user ft@SndFileTransfer {connId, agentConnId = agentConnId@(AgentConnId acId), fileStatus, fileInline} = unless (fileStatus == FSCancelled || fileStatus == FSComplete) $ do withStore' $ \db -> do updateSndFileStatus db ft FSCancelled deleteSndFileChunks db ft withAgent $ \a -> void (sendMessage a acId SMP.noMsgFlags $ smpEncode FileChunkCancel) `catchError` \_ -> pure () - deleteAgentConnectionAsync' user connId agentConnId + when (isNothing fileInline) $ deleteAgentConnectionAsync' user connId agentConnId closeFileHandle :: ChatMonad m => Int64 -> (ChatController -> TVar (Map Int64 Handle)) -> m () closeFileHandle fileId files = do diff --git a/src/Simplex/Chat/Migrations/M20221012_inline_files.hs b/src/Simplex/Chat/Migrations/M20221012_inline_files.hs index 51133d6b63..4b069f0882 100644 --- a/src/Simplex/Chat/Migrations/M20221012_inline_files.hs +++ b/src/Simplex/Chat/Migrations/M20221012_inline_files.hs @@ -10,10 +10,10 @@ m20221012_inline_files = [sql| DROP INDEX idx_messages_direct_shared_msg_id; -ALTER TABLE files ADD COLUMN file_inline TEXT; -ALTER TABLE rcv_files ADD COLUMN rcv_file_inline TEXT; -ALTER TABLE rcv_files ADD COLUMN file_inline TEXT; -ALTER TABLE snd_files ADD COLUMN file_inline TEXT; +ALTER TABLE files ADD COLUMN file_inline TEXT; -- based on offer, determined by file sender for both sides +ALTER TABLE rcv_files ADD COLUMN rcv_file_inline TEXT; -- actual mode when receiving file, determined when invitation is accepted +ALTER TABLE rcv_files ADD COLUMN file_inline TEXT; -- based on offer, determined when invitation is processed +ALTER TABLE snd_files ADD COLUMN file_inline TEXT; -- actual mode when sending file, determined when invitation is accepted ALTER TABLE snd_files ADD COLUMN last_inline_msg_delivery_id INTEGER; CREATE UNIQUE INDEX idx_snd_files_last_inline_msg_delivery_id ON snd_files(last_inline_msg_delivery_id);