// The MIT License (MIT) // // Copyright (c) 2017 Alexander Grebenyuk (github.com/kean). import Foundation import Alamofire import RxSwift import RxCocoa final class Reachability { static var shared: Reachability { return AppContainer.shared.reachability } /// Monitors general network reachability. let reachability = NetworkReachabilityManager() var didBecomeReachable: Signal { return _didBecomeReachable.asSignal() } private let _didBecomeReachable = PublishRelay() init() { self.isReachable = _isReachable.asDriver() if let reachability = self.reachability { reachability.listener = { [weak self] in self?.update($0) } reachability.startListening() } } private func update(_ status: NetworkReachabilityManager.NetworkReachabilityStatus) { if case .reachable = status { _didBecomeReachable.accept(()) } } }