From 5e476e83301033e75ac45257714aae95b4e6d475 Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Tue, 24 Nov 2020 16:18:58 +1100 Subject: [PATCH] Fix coding issues --- SessionMessagingKit/Jobs/AttachmentDownloadJob.swift | 7 ++++++- SessionMessagingKit/Jobs/AttachmentUploadJob.swift | 7 ++++++- .../MessageSender+Utilities.swift | 12 +++++++----- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/SessionMessagingKit/Jobs/AttachmentDownloadJob.swift b/SessionMessagingKit/Jobs/AttachmentDownloadJob.swift index e82ea6917..eaf2a9b8f 100644 --- a/SessionMessagingKit/Jobs/AttachmentDownloadJob.swift +++ b/SessionMessagingKit/Jobs/AttachmentDownloadJob.swift @@ -32,14 +32,19 @@ public final class AttachmentDownloadJob : NSObject, Job, NSCoding { // NSObject // MARK: Coding public init?(coder: NSCoder) { guard let attachmentID = coder.decodeObject(forKey: "attachmentID") as! String?, - let tsIncomingMessageID = coder.decodeObject(forKey: "tsIncomingMessageID") as! String? else { return nil } + let tsIncomingMessageID = coder.decodeObject(forKey: "tsIncomingMessageID") as! String?, + let id = coder.decodeObject(forKey: "id") as! String? else { return nil } self.attachmentID = attachmentID self.tsIncomingMessageID = tsIncomingMessageID + self.id = id + self.failureCount = coder.decodeObject(forKey: "failureCount") as! UInt? ?? 0 } public func encode(with coder: NSCoder) { coder.encode(attachmentID, forKey: "attachmentID") coder.encode(tsIncomingMessageID, forKey: "tsIncomingMessageID") + coder.encode(id, forKey: "id") + coder.encode(failureCount, forKey: "failureCount") } // MARK: Running diff --git a/SessionMessagingKit/Jobs/AttachmentUploadJob.swift b/SessionMessagingKit/Jobs/AttachmentUploadJob.swift index 7b49adc7a..ff8fc8cb9 100644 --- a/SessionMessagingKit/Jobs/AttachmentUploadJob.swift +++ b/SessionMessagingKit/Jobs/AttachmentUploadJob.swift @@ -30,14 +30,19 @@ public final class AttachmentUploadJob : NSObject, Job, NSCoding { // NSObject/N // MARK: Coding public init?(coder: NSCoder) { guard let attachmentID = coder.decodeObject(forKey: "attachmentID") as! String?, - let threadID = coder.decodeObject(forKey: "threadID") as! String? else { return nil } + let threadID = coder.decodeObject(forKey: "threadID") as! String?, + let id = coder.decodeObject(forKey: "id") as! String? else { return nil } self.attachmentID = attachmentID self.threadID = threadID + self.id = id + self.failureCount = coder.decodeObject(forKey: "failureCount") as! UInt? ?? 0 } public func encode(with coder: NSCoder) { coder.encode(attachmentID, forKey: "attachmentID") coder.encode(threadID, forKey: "threadID") + coder.encode(id, forKey: "id") + coder.encode(failureCount, forKey: "failureCount") } // MARK: Running diff --git a/SignalUtilitiesKit/Messaging/Sending & Receiving/MessageSender+Utilities.swift b/SignalUtilitiesKit/Messaging/Sending & Receiving/MessageSender+Utilities.swift index 4bc81442b..bde7d7541 100644 --- a/SignalUtilitiesKit/Messaging/Sending & Receiving/MessageSender+Utilities.swift +++ b/SignalUtilitiesKit/Messaging/Sending & Receiving/MessageSender+Utilities.swift @@ -5,12 +5,14 @@ public extension MessageSender { @objc(send:withAttachments:inThread:usingTransaction:) static func send(_ message: Message, with attachments: [SignalAttachment] = [], in thread: TSThread, using transaction: YapDatabaseReadWriteTransaction) { if let message = message as? VisibleMessage { - let streams = attachments.map { - return TSAttachmentStream(contentType: $0.mimeType, byteCount: UInt32($0.dataLength), sourceFilename: $0.sourceFilename, - caption: $0.captionText, albumMessageId: nil - ) + var streams: [TSAttachmentStream] = [] + attachments.forEach { + let stream = TSAttachmentStream(contentType: $0.mimeType, byteCount: UInt32($0.dataLength), sourceFilename: $0.sourceFilename, + caption: $0.captionText, albumMessageId: nil) + streams.append(stream) + stream.write($0.dataSource) + stream.save(with: transaction) } - streams.forEach { $0.save(with: transaction) } message.attachmentIDs = streams.map { $0.uniqueId! } } message.threadID = thread.uniqueId!