Skip to content
Snippets Groups Projects

Release 1.0.0

Merged Dariusz Rybicki requested to merge development into main
2 files
+ 93
0
Compare changes
  • Side-by-side
  • Inline
Files
2
 
import Foundation
 
import XCTestDynamicOverlay
 
import XXClient
 
 
public struct ReceiveFileCallbacksRegistry {
 
public var register: (ReceiveFileCallback) -> Cancellable
 
public var registered: () -> ReceiveFileCallback
 
}
 
 
extension ReceiveFileCallbacksRegistry {
 
public static func live() -> ReceiveFileCallbacksRegistry {
 
class Registry {
 
var callbacks: [UUID: ReceiveFileCallback] = [:]
 
}
 
let registry = Registry()
 
return ReceiveFileCallbacksRegistry(
 
register: { callback in
 
let id = UUID()
 
registry.callbacks[id] = callback
 
return Cancellable { registry.callbacks[id] = nil }
 
},
 
registered: {
 
ReceiveFileCallback { result in
 
registry.callbacks.values.forEach { $0.handle(result) }
 
}
 
}
 
)
 
}
 
}
 
 
extension ReceiveFileCallbacksRegistry {
 
public static let unimplemented = ReceiveFileCallbacksRegistry(
 
register: XCTUnimplemented("\(Self.self).register", placeholder: Cancellable {}),
 
registered: XCTUnimplemented("\(Self.self).registered", placeholder: .unimplemented)
 
)
 
}
Loading