From 54b50bffd3d01a36a8375fa2cc7de6f534c0c3d0 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 8 Oct 2024 09:08:30 -0500 Subject: [PATCH] added fillColor codable Signed-off-by: Matt Bruce --- .../Atomic/Extensions/VDS-Enums+Codable.swift | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/MVMCoreUI/Atomic/Extensions/VDS-Enums+Codable.swift b/MVMCoreUI/Atomic/Extensions/VDS-Enums+Codable.swift index 6c6ae71f..ab286f35 100644 --- a/MVMCoreUI/Atomic/Extensions/VDS-Enums+Codable.swift +++ b/MVMCoreUI/Atomic/Extensions/VDS-Enums+Codable.swift @@ -16,7 +16,6 @@ import MVMCore //-------------------------------------------------- extension VDS.Surface: Codable {} -extension VDS.Badge.FillColor: Codable {} extension VDS.BadgeIndicator.FillColor: Codable {} extension VDS.BadgeIndicator.Kind: Codable {} extension VDS.BadgeIndicator.MaximumDigits: Codable {} @@ -294,6 +293,54 @@ 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) + + switch type { + case .red: + self = .red + case .yellow: + self = .yellow + case .green: + self = .green + case .orange: + self = .orange + case .blue: + self = .blue + case .black: + self = .black + case .white: + self = .white + case .custom: + let color = try container.decode(Color.self, forKey: .color) + self = .custom(color.uiColor) + } + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + switch self { + case .custom(let color): + try container.encode(CustomColorType.custom.rawValue, forKey: .type) + try container.encode(Color(uiColor: color), forKey: .color) + default: + try container.encode("\(self)", forKey: .type) + } + } +} + extension VDS.TitleLockup.TitleTextColor: Codable { enum CodingKeys: String, CodingKey {