Skip to content
Snippets Groups Projects

Release 1.0.0

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