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