From 79fa48c6edcac3ed3c17063c423440e056019e53 Mon Sep 17 00:00:00 2001
From: Bruno Muniz Azevedo Filho <bruno@elixxir.io>
Date: Wed, 29 Jun 2022 04:26:20 -0300
Subject: [PATCH] Refactored a bit of the transfer code

---
 .../Integration/Session/Session+Chat.swift    | 20 +++++++++----------
 Sources/Integration/Session/Session.swift     | 14 +++++++++++--
 2 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/Sources/Integration/Session/Session+Chat.swift b/Sources/Integration/Session/Session+Chat.swift
index 97c2b8ed..b8d6e02d 100644
--- a/Sources/Integration/Session/Session+Chat.swift
+++ b/Sources/Integration/Session/Session+Chat.swift
@@ -252,16 +252,16 @@ extension Session {
             }
 
             if completed {
-                guard let rawFile = try? manager.downloadFileFromTransfer(with: transfer.id) else { return }
-                _ = try! FileManager.store(data: rawFile, name: transfer.name, type: transfer.type)
-
-                var transfer = transfer
-                transfer.data = rawFile
-                transfer.progress = 1.0
-                _ = try? self.dbManager.saveFileTransfer(transfer)
-
-                message.status = .received
-                _ = try? self.dbManager.saveMessage(message)
+                if let data = try? manager.downloadFileFromTransfer(with: transfer.id),
+                   let _ = try? FileManager.store(data: data, name: transfer.name, type: transfer.type) {
+                    var transfer = transfer
+                    transfer.data = data
+                    transfer.progress = 1.0
+                    message.status = .received
+
+                    _ = try? self.dbManager.saveFileTransfer(transfer)
+                    _ = try? self.dbManager.saveMessage(message)
+                }
             } else {
                 self.progressTransferWith(tid: transfer.id, arrived: Float(arrived), total: Float(total))
             }
diff --git a/Sources/Integration/Session/Session.swift b/Sources/Integration/Session/Session.swift
index d449c95d..ae01b853 100644
--- a/Sources/Integration/Session/Session.swift
+++ b/Sources/Integration/Session/Session.swift
@@ -261,10 +261,16 @@ public final class Session: SessionType {
             var transfer = transfer
 
             do {
-                try client.transferManager?.listenDownloadFromTransfer(with: transfer.id) { completed, received, total, error in
+                try client.transferManager?.listenDownloadFromTransfer(with: transfer.id) { [weak self] completed, received, total, error in
+                    guard let self = self else { return }
                     if completed {
                         transfer.progress = 1.0
                         message.status = .received
+
+                        if let data = try? self.client.transferManager?.downloadFileFromTransfer(with: transfer.id),
+                           let _ = try? FileManager.store(data: data, name: transfer.name, type: transfer.type) {
+                            transfer.data = data
+                        }
                     } else {
                         if error != nil {
                             message.status = .receivingFailed
@@ -304,10 +310,14 @@ public final class Session: SessionType {
             var transfer = transfer
 
             do {
-                try client.transferManager?.listenUploadFromTransfer(with: transfer.id) { completed, sent, arrived, total, error in
+                try client.transferManager?.listenUploadFromTransfer(with: transfer.id) { [weak self] completed, sent, arrived, total, error in
+                    guard let self = self else { return }
+
                     if completed {
                         transfer.progress = 1.0
                         message.status = .sent
+
+                        try? self.client.transferManager?.endTransferUpload(with: transfer.id)
                     } else {
                         if error != nil {
                             message.status = .sendingFailed
-- 
GitLab