Skip to content
Snippets Groups Projects
Commit 5acba553 authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

WIP

parent 8d40ae01
No related branches found
No related tags found
2 merge requests!122Messenger send file,!102Release 1.0.0
import Foundation
import XCTestDynamicOverlay
import XXClient
public struct MessengerSendFile {
public struct CallbackData {
public init(
transferId: Data,
result: Result<FileTransferProgressCallback.Callback, NSError>
) {
self.transferId = transferId
self.result = result
}
public var transferId: Data
public var result: Result<FileTransferProgressCallback.Callback, NSError>
}
public typealias Callback = (CallbackData) -> Void
public enum Error: Swift.Error, Equatable {
case notConnected
}
public var run: (FileTransferSend.Params, @escaping Callback) throws -> Void
public func callAsFunction(
params: FileTransferSend.Params,
callback: @escaping Callback
) throws -> Void {
try run(params, callback)
}
}
extension MessengerSendFile {
public static func live(_ env: MessengerEnvironment) -> MessengerSendFile {
MessengerSendFile { params, callback in
guard let e2e = env.e2e() else {
throw Error.notConnected
}
let fileTransfer = try env.initFileTransfer(
params: InitFileTransfer.Params(
e2eId: e2e.getId(),
e2eFileTransferParamsJSON: env.getE2EFileTransferParams(),
fileTransferParamsJSON: env.getFileTransferParams()
),
callback: .unimplemented
)
let semaphore = DispatchSemaphore(value: 0)
var transferId: Data! = nil
transferId = try fileTransfer.send(
params: params,
callback: FileTransferProgressCallback { result in
callback(CallbackData(
transferId: transferId,
result: result
))
switch result {
case .failure(_):
semaphore.signal()
case .success(let callback):
if callback.progress.error != nil {
}
if callback.progress.completed {
semaphore.signal()
}
}
}
)
semaphore.wait()
try? fileTransfer.closeSend(transferId: transferId)
}
}
}
extension MessengerSendFile {
public static let unimplemented = MessengerSendFile(
run: XCTUnimplemented("\(Self.self)")
)
}
......@@ -10,8 +10,11 @@ public struct MessengerEnvironment {
public var fileManager: MessengerFileManager
public var generateSecret: GenerateSecret
public var getCMixParams: GetCMixParams
public var getE2EFileTransferParams: GetE2EFileTransferParams
public var getE2EParams: GetE2EParams
public var getFileTransferParams: GetFileTransferParams
public var getSingleUseParams: GetSingleUseParams
public var initFileTransfer: InitFileTransfer
public var isRegisteredWithUD: IsRegisteredWithUD
public var loadCMix: LoadCMix
public var login: Login
......@@ -48,8 +51,11 @@ extension MessengerEnvironment {
fileManager: .live(),
generateSecret: .live,
getCMixParams: .liveDefault,
getE2EFileTransferParams: .liveDefault,
getE2EParams: .liveDefault,
getFileTransferParams: .liveDefault,
getSingleUseParams: .liveDefault,
initFileTransfer: .live,
isRegisteredWithUD: .live,
loadCMix: .live,
login: .live,
......@@ -81,8 +87,11 @@ extension MessengerEnvironment {
fileManager: .unimplemented,
generateSecret: .unimplemented,
getCMixParams: .unimplemented,
getE2EFileTransferParams: .unimplemented,
getE2EParams: .unimplemented,
getFileTransferParams: .unimplemented,
getSingleUseParams: .unimplemented,
initFileTransfer: .unimplemented,
isRegisteredWithUD: .unimplemented,
loadCMix: .unimplemented,
login: .unimplemented,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment