import SGSimpleSettings import Foundation import SwiftSignalKit public func sgSimpleSettingsBoolSignal(_ key: SGSimpleSettings.Keys, defaultValue: Bool) -> Signal { let initial = Signal.single(UserDefaults.standard.object(forKey: key.rawValue) as? Bool ?? defaultValue) let changes = Signal { subscriber in let observer = NotificationCenter.default.addObserver( forName: UserDefaults.didChangeNotification, object: UserDefaults.standard, queue: nil ) { _ in let value = UserDefaults.standard.object(forKey: key.rawValue) as? Bool ?? defaultValue subscriber.putNext(value) } return ActionDisposable { NotificationCenter.default.removeObserver(observer) } } return (initial |> then(changes)) |> distinctUntilChanged }