Add PromiseKit dependency
- Added PromiseKit dependency
This commit is contained in:
29
Carthage/Checkouts/PromiseKit/Extensions/CoreBluetooth/Sources/CBCentralManager+Promise.swift
vendored
Normal file
29
Carthage/Checkouts/PromiseKit/Extensions/CoreBluetooth/Sources/CBCentralManager+Promise.swift
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
import CoreBluetooth
|
||||
#if !PMKCocoaPods
|
||||
import PromiseKit
|
||||
#endif
|
||||
|
||||
|
||||
private class CentralManager: CBCentralManager, CBCentralManagerDelegate {
|
||||
var retainCycle: CentralManager?
|
||||
let (promise, fulfill) = Guarantee<CBCentralManager>.pending()
|
||||
|
||||
@objc func centralManagerDidUpdateState(_ manager: CBCentralManager) {
|
||||
if manager.state != .unknown {
|
||||
fulfill(manager)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension CBCentralManager {
|
||||
/// A promise that fulfills when the state of CoreBluetooth changes
|
||||
public class func state(options: [String: Any]? = [CBCentralManagerOptionShowPowerAlertKey: false]) -> Guarantee<CBCentralManager> {
|
||||
let manager = CentralManager(delegate: nil, queue: nil, options: options)
|
||||
manager.delegate = manager
|
||||
manager.retainCycle = manager
|
||||
manager.promise.done { _ in
|
||||
manager.retainCycle = nil
|
||||
}
|
||||
return manager.promise
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user