import Postbox public final class LoggingSettings: PreferencesEntry, Equatable { public let logToFile: Bool public let logToConsole: Bool public let redactSensitiveData: Bool #if DEBUG public static var defaultSettings = LoggingSettings(logToFile: true, logToConsole: true, redactSensitiveData: true) #else public static var defaultSettings = LoggingSettings(logToFile: false, logToConsole: false, redactSensitiveData: true) #endif public init(logToFile: Bool, logToConsole: Bool, redactSensitiveData: Bool) { self.logToFile = logToFile self.logToConsole = logToConsole self.redactSensitiveData = redactSensitiveData } public init(decoder: PostboxDecoder) { self.logToFile = decoder.decodeInt32ForKey("logToFile", orElse: 0) != 0 self.logToConsole = decoder.decodeInt32ForKey("logToConsole", orElse: 0) != 0 self.redactSensitiveData = decoder.decodeInt32ForKey("redactSensitiveData", orElse: 1) != 0 } public func encode(_ encoder: PostboxEncoder) { encoder.encodeInt32(self.logToFile ? 1 : 0, forKey: "logToFile") encoder.encodeInt32(self.logToConsole ? 1 : 0, forKey: "logToConsole") encoder.encodeInt32(self.redactSensitiveData ? 1 : 0, forKey: "redactSensitiveData") } public func withUpdatedLogToFile(_ logToFile: Bool) -> LoggingSettings { return LoggingSettings(logToFile: logToFile, logToConsole: self.logToConsole, redactSensitiveData: self.redactSensitiveData) } public func withUpdatedLogToConsole(_ logToConsole: Bool) -> LoggingSettings { return LoggingSettings(logToFile: self.logToFile, logToConsole: logToConsole, redactSensitiveData: self.redactSensitiveData) } public func withUpdatedRedactSensitiveData(_ redactSensitiveData: Bool) -> LoggingSettings { return LoggingSettings(logToFile: self.logToFile, logToConsole: self.logToConsole, redactSensitiveData: redactSensitiveData) } public static func ==(lhs: LoggingSettings, rhs: LoggingSettings) -> Bool { if lhs.logToFile != rhs.logToFile { return false } if lhs.logToConsole != rhs.logToConsole { return false } if lhs.redactSensitiveData != rhs.redactSensitiveData { return false } return true } public func isEqual(to: PreferencesEntry) -> Bool { guard let to = to as? LoggingSettings else { return false } return self == to } }