Swiftgram/submodules/SyncCore/Sources/LoggingSettings.swift
2019-10-21 16:58:00 +04:00

65 lines
2.5 KiB
Swift

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
}
}