From 7eb1a4ff4b3de58be62253df6b1da2c6682bcbcf Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 15 Oct 2024 16:57:37 -0500 Subject: [PATCH] redid the values Signed-off-by: Matt Bruce --- MVMCoreUI/Atomic/Atoms/Views/BadgeModel.swift | 13 +++-- .../Atomic/Extensions/VDS-Enums+Codable.swift | 47 ++++++++----------- 2 files changed, 27 insertions(+), 33 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/BadgeModel.swift b/MVMCoreUI/Atomic/Atoms/Views/BadgeModel.swift index 59309c49..de5d0dd4 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/BadgeModel.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/BadgeModel.swift @@ -27,11 +27,13 @@ open class BadgeModel: MoleculeModelProtocol { public var maxWidth: CGFloat? public var numberOfLines: Int = 1 public var fillColorStyle = Badge.FillColor.red - public var fillColor: Color? public var surface: Surface = .light private enum CodingKeys: String, CodingKey { - case id, accessibilityIdentifier, text, textColor, textColorStyle, accessibilityText, fillColor, fillColorStyle, surface, numberOfLines, maxWidth + case id, accessibilityIdentifier, accessibilityText + case surface, numberOfLines, maxWidth + case text, textColor + case fillColor, fillColorStyle } required public convenience init(from decoder: Decoder) throws { @@ -48,7 +50,7 @@ open class BadgeModel: MoleculeModelProtocol { } //look for a style - fillColorStyle = try container.decodeIfPresent(Badge.FillColor.self, forKey: .fillColor) ?? .red + fillColorStyle = try container.decodeIfPresent(Badge.FillColor.self, forKey: .fillColorStyle) ?? .red //look for a color and set the style if let fillColor = try container.decodeIfPresent(Color.self, forKey: .fillColor) { @@ -65,10 +67,10 @@ open class BadgeModel: MoleculeModelProtocol { try container.encode(text, forKey: .text) try container.encode(accessibilityText, forKey: .accessibilityText) try container.encodeIfPresent(accessibilityIdentifier, forKey: .accessibilityIdentifier) - try container.encode(fillColor, forKey: .fillColor) try container.encode(surface, forKey: .surface) try container.encode(numberOfLines, forKey: .numberOfLines) try container.encodeIfPresent(maxWidth, forKey: .maxWidth) + try container.encode(fillColorStyle, forKey: .fillColorStyle) switch textColorStyle { case .custom(let color): try container.encode(Color(uiColor: color), forKey: .textColor) @@ -80,7 +82,8 @@ open class BadgeModel: MoleculeModelProtocol { public func isEqual(to model: any ModelComparisonProtocol) -> Bool { guard let model = model as? BadgeModel else { return false } return self.backgroundColor == model.backgroundColor - && self.fillColor == model.fillColor + && self.fillColorStyle == model.fillColorStyle + && self.textColorStyle == model.textColorStyle && self.numberOfLines == model.numberOfLines && self.text == model.text && self.surface == model.surface diff --git a/MVMCoreUI/Atomic/Extensions/VDS-Enums+Codable.swift b/MVMCoreUI/Atomic/Extensions/VDS-Enums+Codable.swift index 93669dc4..1109cece 100644 --- a/MVMCoreUI/Atomic/Extensions/VDS-Enums+Codable.swift +++ b/MVMCoreUI/Atomic/Extensions/VDS-Enums+Codable.swift @@ -294,49 +294,40 @@ extension VDS.TitleLockup.TextColor: Codable { } extension VDS.Badge.FillColor: Codable { - enum CodingKeys: String, CodingKey { - case type - case color - } - - enum CustomColorType: String, Codable { - case red, yellow, green, orange, blue, black, white - case custom - } - public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: CodingKeys.self) - let type = try container.decode(CustomColorType.self, forKey: .type) - + let container = try decoder.singleValueContainer() + let type = try container.decode(String.self) switch type { - case .red: + case "red": self = .red - case .yellow: + case "yellow": self = .yellow - case .green: + case "green": self = .green - case .orange: + case "orange": self = .orange - case .blue: + case "blue": self = .blue - case .black: + case "black": self = .black - case .white: + case "white": self = .white - case .custom: - let color = try container.decode(Color.self, forKey: .color) - self = .custom(color.uiColor) + default: + if let color = try? Color(from: decoder) { + self = .custom(color.uiColor) + } else { + self = .custom(UIColor(hexString: type)) + } } } public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) + var container = encoder.singleValueContainer() switch self { - case .custom(let color): - try container.encode(CustomColorType.custom.rawValue, forKey: .type) - try container.encode(Color(uiColor: color), forKey: .color) + case .custom(let value): + try container.encode(Color(uiColor: value)) default: - try container.encode("\(self)", forKey: .type) + try container.encode(String(reflecting: self)) } } }