Select Git revision
Callbacks.swift 7.46 KiB
import Bindings
final class TextListener: NSObject, BindingsListenerProtocol {
let callback: (BindingsMessage?) -> ()
init(_ callback: @escaping (BindingsMessage?) -> Void) {
self.callback = callback
super.init()
}
func hear(_ message: BindingsMessage?) {
callback(message)
}
func name() -> String { "TEXT_LISTENER" }
}
final class ConfirmationCallback: NSObject, BindingsAuthConfirmCallbackProtocol {
let callback: (_ partner: BindingsContact) -> ()
init(_ callback: @escaping (_ partner: BindingsContact) -> ()) {
self.callback = callback
super.init()
}
func callback(_ partner: BindingsContact?) {
guard let partner = partner else { return }
callback(partner)
}
}
final class RequestCallback: NSObject, BindingsAuthRequestCallbackProtocol {
let callback: (_ requestor: BindingsContact) -> ()
init(_ callback: @escaping (_ requestor: BindingsContact) -> ()) {
self.callback = callback
super.init()
}
func callback(_ requestor: BindingsContact?) {
guard let requestor = requestor else { return }
callback(requestor)
}
}
final class HealthCallback: NSObject, BindingsNetworkHealthCallbackProtocol {
let callback: (Bool) -> Void
init(_ callback: @escaping (Bool) -> Void) {
self.callback = callback
super.init()
}
func callback(_ p0: Bool) {
callback(p0)
}
}
final class LogCallback: NSObject, BindingsLogWriterProtocol {
let callback: (String?) -> Void
init(_ callback: @escaping (String?) -> Void) {
self.callback = callback
super.init()
}
func log(_ p0: String?) {
callback(p0)
}
}
final class DeliveryCallback: NSObject, BindingsMessageDeliveryCallbackProtocol {
let callback: (DeliveryResult) -> Void
init(_ callback: @escaping (DeliveryResult) -> Void) {
self.callback = callback
super.init()
}
func eventCallback(_ msgID: Data?, delivered: Bool, timedOut: Bool, roundResults: Data?) {
let content =
"""
"Delivery Callback:
- Timed out: \(timedOut)
- Delivered: \(delivered)
- Message ID in base64: \(String(describing: msgID?.base64EncodedString()))
- Round results in base64: \(String(describing: roundResults?.base64EncodedString()))"
"""
log(string: content, type: .info)
callback((msgID, delivered, timedOut, roundResults))
}
}
final class RoundCallback: NSObject, BindingsRoundCompletionCallbackProtocol {
let callback: (Bool) -> Void
init(_ callback: @escaping (Bool) -> Void) {
self.callback = callback
super.init()
}
func eventCallback(_ rid: Int, success: Bool, timedOut: Bool) {
log(string: "Add/Confirm RoundCallback:\nid: \(rid)\nSuccessfull: \(success)\nTimed out: \(timedOut)", type: .info)
callback(success && !timedOut)
}
}
final class SearchCallback: NSObject, BindingsSingleSearchCallbackProtocol {
let callback: (Result<BindingsContact, Error>) -> Void
init(_ callback: @escaping (Result<BindingsContact, Error>) -> Void) {
self.callback = callback
super.init()
}
func callback(_ contact: BindingsContact?, error: String?) {
if let error = error, error.count > 0 {
callback(.failure(NSError.create(error).friendly()))
return
}
if let contact = contact {
callback(.success(contact))
}
}
}
final class EventCallback: NSObject, BindingsEventCallbackFunctionObjectProtocol {
let callback: (BackendEvent) -> Void
init(_ callback: @escaping (BackendEvent) -> Void) {
self.callback = callback
super.init()
}
func reportEvent(_ priority: Int, category: String?, evtType: String?, details: String?) {
callback((priority, category, evtType, details))
}
}
final class GroupRequestCallback: NSObject, BindingsGroupRequestFuncProtocol {
let callback: (BindingsGroup) -> Void
init(_ callback: @escaping (BindingsGroup) -> Void) {
self.callback = callback
super.init()
}
func groupRequestCallback(_ g: BindingsGroup?) {
guard let group = g else { return }
callback(group)
}
}
final class GroupMessageCallback: NSObject, BindingsGroupReceiveFuncProtocol {
let callback: (BindingsGroupMessageReceive) -> Void
init(_ callback: @escaping (BindingsGroupMessageReceive) -> Void) {
self.callback = callback
super.init()
}
func groupReceiveCallback(_ msg: BindingsGroupMessageReceive?) {
guard let message = msg else { return }
callback(message)
}
}
final class MultiLookupCallback: NSObject, BindingsMultiLookupCallbackProtocol {
let thisCallback: (BindingsContactList?, BindingsIdList?, String?) -> Void
init(_ callback: @escaping (BindingsContactList?, BindingsIdList?, String?) -> Void) {
self.thisCallback = callback
super.init()
}
func callback(_ Succeeded: BindingsContactList?, failed: BindingsIdList?, errors: String?) {
thisCallback(Succeeded, failed, errors)
}
}
final class PreImageCallback: NSObject, BindingsPreimageNotificationProtocol {
let callback: (Data?, Bool) -> Void
init(_ callback: @escaping (Data?, Bool) -> Void) {
self.callback = callback
super.init()
}
func notify(_ identity: Data?, deleted: Bool) {
callback(identity, deleted)
}
}
final class LookupCallback: NSObject, BindingsLookupCallbackProtocol {
let callback: (Result<BindingsContact, Error>) -> Void
init(_ callback: @escaping (Result<BindingsContact, Error>) -> Void) {
self.callback = callback
super.init()
}
func callback(_ contact: BindingsContact?, error: String?) {
guard let contact = contact else {
if let error = error {
if !error.isEmpty {
callback(.failure(NSError.create(error).friendly()))
}
}
return
}
callback(.success(contact))
}
}
final class IncomingTransferCallback: NSObject, BindingsFileTransferReceiveFuncProtocol {
let callback: (Data?, String?, String?, Data?, Int, Data?) -> Void
init(_ callback: @escaping (Data?, String?, String?, Data?, Int, Data?) -> Void) {
self.callback = callback
super.init()
}
func receiveCallback(_ tid: Data?, fileName: String?, fileType: String?, sender: Data?, size: Int, preview: Data?) {
callback(tid, fileName, fileType, sender, size, preview)
}
}
final class IncomingTransferProgressCallback: NSObject, BindingsFileTransferReceivedProgressFuncProtocol {
let callback: (Bool, Int, Int, Error?) -> Void
init(_ callback: @escaping (Bool, Int, Int, Error?) -> Void) {
self.callback = callback
super.init()
}
func receivedProgressCallback(_ completed: Bool, received: Int, total: Int, t: BindingsFilePartTracker?, err: Error?) {
callback(completed, received, total, err)
}
}
final class OutgoingTransferProgressCallback: NSObject, BindingsFileTransferSentProgressFuncProtocol {
let callback: (Bool, Int, Int, Int, Error?) -> Void
init(_ callback: @escaping (Bool, Int, Int, Int, Error?) -> Void) {
self.callback = callback
super.init()
}
func sentProgressCallback(_ completed: Bool, sent: Int, arrived: Int, total: Int, t: BindingsFilePartTracker?, err: Error?) {
callback(completed, sent, arrived, total, err)
}
}