import Foundation
import Postbox

public struct AppConfiguration: PreferencesEntry, Equatable {
    public var data: JSON?
    
    public static var defaultValue: AppConfiguration {
        return AppConfiguration(data: nil)
    }
    
    init(data: JSON?) {
        self.data = data
    }
    
    public init(decoder: PostboxDecoder) {
        self.data = decoder.decodeObjectForKey("data", decoder: { JSON(decoder: $0) }) as? JSON
    }
    
    public func encode(_ encoder: PostboxEncoder) {
        if let data = self.data {
            encoder.encodeObject(data, forKey: "data")
        } else {
            encoder.encodeNil(forKey: "data")
        }
    }
    
    public func isEqual(to: PreferencesEntry) -> Bool {
        guard let to = to as? AppConfiguration else {
            return false
        }
        return self == to
    }
}