From 8b37002d893ab83224d7b454841b8806b14477db Mon Sep 17 00:00:00 2001 From: Morgan Pretty Date: Fri, 2 Dec 2022 17:38:01 +1100 Subject: [PATCH] Removed some unneeded imports # Conflicts: # SessionMessagingKit/Jobs/Types/AttachmentUploadJob.swift # SessionMessagingKit/Jobs/Types/MessageSendJob.swift # SessionShareExtension/SAEScreenLockViewController.swift # SessionSnodeKit/Models/SnodeBatchRequest.swift --- Session/Onboarding/LinkDeviceVC.swift | 1 - Session/Onboarding/PNModeVC.swift | 1 - Session/Shared/LoadingViewController.swift | 1 - .../Jobs/Types/AttachmentUploadJob.swift | 3 +- .../Jobs/Types/MessageReceiveJob.swift | 1 - .../Jobs/Types/MessageSendJob.swift | 3 +- .../Jobs/Types/SendReadReceiptsJob.swift | 2 +- .../SAEScreenLockViewController.swift | 2 +- .../Models/SnodeBatchRequest.swift | 63 +++++++++++++++++++ SessionSnodeKit/SnodeMessage.swift | 2 +- .../Shared Views/GalleryRailView.swift | 1 - 11 files changed, 70 insertions(+), 10 deletions(-) create mode 100644 SessionSnodeKit/Models/SnodeBatchRequest.swift diff --git a/Session/Onboarding/LinkDeviceVC.swift b/Session/Onboarding/LinkDeviceVC.swift index fcab1aa90..9c25b8c1f 100644 --- a/Session/Onboarding/LinkDeviceVC.swift +++ b/Session/Onboarding/LinkDeviceVC.swift @@ -2,7 +2,6 @@ import UIKit import AVFoundation -import PromiseKit import SessionUIKit import SessionUtilitiesKit import SessionSnodeKit diff --git a/Session/Onboarding/PNModeVC.swift b/Session/Onboarding/PNModeVC.swift index 54f1b0e48..83751afed 100644 --- a/Session/Onboarding/PNModeVC.swift +++ b/Session/Onboarding/PNModeVC.swift @@ -1,7 +1,6 @@ // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import UIKit -import PromiseKit import SessionUIKit import SessionMessagingKit import SessionSnodeKit diff --git a/Session/Shared/LoadingViewController.swift b/Session/Shared/LoadingViewController.swift index d3bd6ccce..7b5021fc2 100644 --- a/Session/Shared/LoadingViewController.swift +++ b/Session/Shared/LoadingViewController.swift @@ -1,7 +1,6 @@ // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import UIKit -import PromiseKit import SessionUIKit // The initial presentation is intended to be indistinguishable from the Launch Screen. diff --git a/SessionMessagingKit/Jobs/Types/AttachmentUploadJob.swift b/SessionMessagingKit/Jobs/Types/AttachmentUploadJob.swift index f8c725f8e..4abb5ca6a 100644 --- a/SessionMessagingKit/Jobs/Types/AttachmentUploadJob.swift +++ b/SessionMessagingKit/Jobs/Types/AttachmentUploadJob.swift @@ -1,8 +1,9 @@ // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import Foundation +import Combine import GRDB -import PromiseKit +import SignalCoreKit import SessionUtilitiesKit public enum AttachmentUploadJob: JobExecutor { diff --git a/SessionMessagingKit/Jobs/Types/MessageReceiveJob.swift b/SessionMessagingKit/Jobs/Types/MessageReceiveJob.swift index 5ec15e21e..d845f4eb5 100644 --- a/SessionMessagingKit/Jobs/Types/MessageReceiveJob.swift +++ b/SessionMessagingKit/Jobs/Types/MessageReceiveJob.swift @@ -2,7 +2,6 @@ import Foundation import GRDB -import PromiseKit import SessionUtilitiesKit public enum MessageReceiveJob: JobExecutor { diff --git a/SessionMessagingKit/Jobs/Types/MessageSendJob.swift b/SessionMessagingKit/Jobs/Types/MessageSendJob.swift index cec000718..5b1a1b7dc 100644 --- a/SessionMessagingKit/Jobs/Types/MessageSendJob.swift +++ b/SessionMessagingKit/Jobs/Types/MessageSendJob.swift @@ -1,8 +1,9 @@ // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import Foundation +import Combine import GRDB -import PromiseKit +import SignalCoreKit import SessionUtilitiesKit import SessionSnodeKit diff --git a/SessionMessagingKit/Jobs/Types/SendReadReceiptsJob.swift b/SessionMessagingKit/Jobs/Types/SendReadReceiptsJob.swift index 78f9fea9b..fa69a209a 100644 --- a/SessionMessagingKit/Jobs/Types/SendReadReceiptsJob.swift +++ b/SessionMessagingKit/Jobs/Types/SendReadReceiptsJob.swift @@ -1,8 +1,8 @@ // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import Foundation +import Combine import GRDB -import PromiseKit import SessionUtilitiesKit public enum SendReadReceiptsJob: JobExecutor { diff --git a/SessionShareExtension/SAEScreenLockViewController.swift b/SessionShareExtension/SAEScreenLockViewController.swift index 36fac11ea..2c205da2e 100644 --- a/SessionShareExtension/SAEScreenLockViewController.swift +++ b/SessionShareExtension/SAEScreenLockViewController.swift @@ -1,7 +1,7 @@ // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import UIKit -import PromiseKit +import SignalCoreKit import SignalUtilitiesKit import SessionUIKit import SessionUtilitiesKit diff --git a/SessionSnodeKit/Models/SnodeBatchRequest.swift b/SessionSnodeKit/Models/SnodeBatchRequest.swift new file mode 100644 index 000000000..92c88ef4c --- /dev/null +++ b/SessionSnodeKit/Models/SnodeBatchRequest.swift @@ -0,0 +1,63 @@ +// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. + +import Foundation +import SessionUtilitiesKit + +internal extension SnodeAPI { + struct BatchRequest: Encodable { + let requests: [Child] + + init(requests: [Info]) { + self.requests = requests.map { $0.child } + } + + // MARK: - BatchRequest.Info + + struct Info { + public let responseType: Codable.Type + fileprivate let child: Child + + public init(request: SnodeRequest, responseType: R.Type) { + self.child = Child(request: request) + self.responseType = HTTP.BatchSubResponse.self + } + + public init(request: SnodeRequest) { + self.init( + request: request, + responseType: NoResponse.self + ) + } + } + + // MARK: - BatchRequest.Child + + struct Child: Encodable { + enum CodingKeys: String, CodingKey { + case method + case params + } + + let endpoint: SnodeAPI.Endpoint + + /// The `jsonBodyEncoder` is used to avoid having to make `BatchSubRequest` a generic type (haven't found + /// a good way to keep `BatchSubRequest` encodable using protocols unfortunately so need this work around) + private let jsonBodyEncoder: ((inout KeyedEncodingContainer, CodingKeys) throws -> ())? + + init(request: SnodeRequest) { + self.endpoint = request.endpoint + + self.jsonBodyEncoder = { [body = request.body] container, key in + try container.encode(body, forKey: key) + } + } + + public func encode(to encoder: Encoder) throws { + var container: KeyedEncodingContainer = encoder.container(keyedBy: CodingKeys.self) + + try container.encode(endpoint.rawValue, forKey: .method) + try jsonBodyEncoder?(&container, .params) + } + } + } +} diff --git a/SessionSnodeKit/SnodeMessage.swift b/SessionSnodeKit/SnodeMessage.swift index 0b4c9cb7c..dedc33c2e 100644 --- a/SessionSnodeKit/SnodeMessage.swift +++ b/SessionSnodeKit/SnodeMessage.swift @@ -1,6 +1,6 @@ // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. -import PromiseKit +import Foundation import SessionUtilitiesKit public final class SnodeMessage: Codable { diff --git a/SignalUtilitiesKit/Shared Views/GalleryRailView.swift b/SignalUtilitiesKit/Shared Views/GalleryRailView.swift index c41ccb715..11ce30b7d 100644 --- a/SignalUtilitiesKit/Shared Views/GalleryRailView.swift +++ b/SignalUtilitiesKit/Shared Views/GalleryRailView.swift @@ -1,7 +1,6 @@ // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import UIKit -import PromiseKit import SessionUIKit // MARK: - GalleryRailItem