import Combine import Foundation public struct ReportingStatusIsEnabled { public var get: () -> Bool public var set: (Bool) -> Void public var publisher: () -> AnyPublisher<Bool, Never> } extension ReportingStatusIsEnabled { public static func live( userDefaults: UserDefaults = .standard ) -> ReportingStatusIsEnabled { ReportingStatusIsEnabled( get: { userDefaults.isReportingEnabled }, set: { enabled in userDefaults.isReportingEnabled = enabled }, publisher: { userDefaults.publisher(for: \.isReportingEnabled).eraseToAnyPublisher() } ) } } private extension UserDefaults { static let isReportingEnabledKey = "isReportingEnabled" @objc var isReportingEnabled: Bool { get { bool(forKey: Self.isReportingEnabledKey) } set { set(newValue, forKey: Self.isReportingEnabledKey) } } }