diff --git a/SessionMessagingKit/Jobs/AttachmentDownloadJob.swift b/SessionMessagingKit/Jobs/AttachmentDownloadJob.swift index 85e251553..b5eb03556 100644 --- a/SessionMessagingKit/Jobs/AttachmentDownloadJob.swift +++ b/SessionMessagingKit/Jobs/AttachmentDownloadJob.swift @@ -59,7 +59,9 @@ public final class AttachmentDownloadJob : NSObject, Job, NSCoding { // NSObject // MARK: Running public func execute() { - JobQueue.currentlyExecutingJobs.insert(id!) + if let id = id { + JobQueue.currentlyExecutingJobs.insert(id) + } guard !isDeferred else { return } if TSAttachment.fetch(uniqueId: attachmentID) is TSAttachmentStream { // FIXME: It's not clear * how * this happens, but apparently we can get to this point diff --git a/SessionMessagingKit/Jobs/AttachmentUploadJob.swift b/SessionMessagingKit/Jobs/AttachmentUploadJob.swift index 584824982..e3f9a1df6 100644 --- a/SessionMessagingKit/Jobs/AttachmentUploadJob.swift +++ b/SessionMessagingKit/Jobs/AttachmentUploadJob.swift @@ -60,7 +60,9 @@ public final class AttachmentUploadJob : NSObject, Job, NSCoding { // NSObject/N // MARK: Running public func execute() { - JobQueue.currentlyExecutingJobs.insert(id!) + if let id = id { + JobQueue.currentlyExecutingJobs.insert(id) + } guard let stream = TSAttachment.fetch(uniqueId: attachmentID) as? TSAttachmentStream else { return handleFailure(error: Error.noAttachment) } diff --git a/SessionMessagingKit/Jobs/MessageReceiveJob.swift b/SessionMessagingKit/Jobs/MessageReceiveJob.swift index 48e919ab8..227dfa591 100644 --- a/SessionMessagingKit/Jobs/MessageReceiveJob.swift +++ b/SessionMessagingKit/Jobs/MessageReceiveJob.swift @@ -54,7 +54,9 @@ public final class MessageReceiveJob : NSObject, Job, NSCoding { // NSObject/NSC } public func execute() -> Promise { - JobQueue.currentlyExecutingJobs.insert(id!) + if let id = id { // Can be nil (e.g. when background polling) + JobQueue.currentlyExecutingJobs.insert(id) + } let (promise, seal) = Promise.pending() SNMessagingKitConfiguration.shared.storage.write(with: { transaction in // Intentionally capture self do { diff --git a/SessionMessagingKit/Jobs/MessageSendJob.swift b/SessionMessagingKit/Jobs/MessageSendJob.swift index c894e6460..aed0268a1 100644 --- a/SessionMessagingKit/Jobs/MessageSendJob.swift +++ b/SessionMessagingKit/Jobs/MessageSendJob.swift @@ -69,7 +69,9 @@ public final class MessageSendJob : NSObject, Job, NSCoding { // NSObject/NSCodi // MARK: Running public func execute() { - JobQueue.currentlyExecutingJobs.insert(id!) + if let id = id { + JobQueue.currentlyExecutingJobs.insert(id) + } let storage = SNMessagingKitConfiguration.shared.storage if let message = message as? VisibleMessage { guard TSOutgoingMessage.find(withTimestamp: message.sentTimestamp!) != nil else { return } // The message has been deleted diff --git a/SessionMessagingKit/Jobs/NotifyPNServerJob.swift b/SessionMessagingKit/Jobs/NotifyPNServerJob.swift index c243fa30a..82c57b3f3 100644 --- a/SessionMessagingKit/Jobs/NotifyPNServerJob.swift +++ b/SessionMessagingKit/Jobs/NotifyPNServerJob.swift @@ -38,7 +38,9 @@ public final class NotifyPNServerJob : NSObject, Job, NSCoding { // NSObject/NSC } public func execute() -> Promise { - JobQueue.currentlyExecutingJobs.insert(id!) + if let id = id { + JobQueue.currentlyExecutingJobs.insert(id) + } let server = PushNotificationAPI.server let parameters = [ "data" : message.data.description, "send_to" : message.recipient ] let url = URL(string: "\(server)/notify")!