// // AccountMetadata.swift // Account // // Created by Brent Simmons on 3/3/19. // Copyright © 2019 Ranchero Software, LLC. All rights reserved. // import Foundation import RSWeb protocol AccountMetadataDelegate: class { func valueDidChange(_ accountMetadata: AccountMetadata, key: AccountMetadata.CodingKeys) } final class AccountMetadata: Codable { struct ConditionalGetKeys { static let subscriptions = "subscriptions" static let tags = "tags" static let taggings = "taggings" static let icons = "icons" } enum CodingKeys: String, CodingKey { case name case isActive case username case conditionalGetInfo } var name: String? { didSet { if name != oldValue { valueDidChange(.name) } } } var isActive: Bool = true { didSet { if isActive != oldValue { valueDidChange(.isActive) } } } var username: String? { didSet { if username != oldValue { valueDidChange(.username) } } } var conditionalGetInfo = [String: HTTPConditionalGetInfo]() { didSet { if conditionalGetInfo != oldValue { valueDidChange(.conditionalGetInfo) } } } weak var delegate: AccountMetadataDelegate? func valueDidChange(_ key: CodingKeys) { delegate?.valueDidChange(self, key: key) } }