From 97d7e1dba1d7bc3cb3e68f85bb0916b11c069d27 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 23 May 2024 11:18:23 -0500 Subject: [PATCH 1/3] fixed issue with decoding Signed-off-by: Matt Bruce --- .../Extensions/VDS-Tilelet+Codable.swift | 46 +++++++++++++++---- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift b/MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift index 17bca4b5..b0a0c46e 100644 --- a/MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift +++ b/MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift @@ -35,41 +35,67 @@ extension Tilelet.BadgeModel: Codable { extension Tilelet.DescriptiveIcon: Codable { private enum CodingKeys: String, CodingKey { - case name, size, surface + case name, size, color, accessibleText } public init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) let name = try container.decode(Icon.Name.self, forKey: .name) let size = try container.decodeIfPresent(Icon.Size.self, forKey: .size) ?? .medium - let surface = try container.decodeIfPresent(Surface.self, forKey: .surface) ?? .dark - self.init(name: name, size: size, surface: surface) + let color = try container.decodeIfPresent(Color.self, forKey: .color) + let accessibleText = try? container.decode(String.self, forKey: .accessibleText) + if let uiColor = color?.uiColor { + self.init(name: name, + colorConfiguration: .init(uiColor, uiColor), + size: size, + accessibleText: accessibleText) + } else { + self.init(name: name, + size: size, + accessibleText: accessibleText) + } } public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(name, forKey: .name) try container.encode(size, forKey: .size) - try container.encode(surface, forKey: .surface) + try container.encode(accessibleText, forKey: .accessibleText) + try container.encodeIfPresent(colorConfiguration.lightColor.hexString, forKey: .color) } } +extension Tilelet.DirectionalIcon.IconType : Codable {} +extension Tilelet.DirectionalIcon.IconSize : Codable {} + extension Tilelet.DirectionalIcon: Codable { private enum CodingKeys: String, CodingKey { - case size, surface + case name, size, color, accessibleText } public init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) - let size = try container.decodeIfPresent(Icon.Size.self, forKey: .size) ?? .medium - let surface = try container.decodeIfPresent(Surface.self, forKey: .surface) ?? .dark - self.init(size: size, surface: surface) + let iconType = try container.decodeIfPresent(IconType.self, forKey: .name) ?? .rightArrow + let size = try container.decodeIfPresent(IconSize.self, forKey: .size) ?? .medium + let color = try container.decodeIfPresent(Color.self, forKey: .color) + let accessibleText = try? container.decode(String.self, forKey: .accessibleText) + if let uiColor = color?.uiColor { + self.init(iconType: iconType, + colorConfiguration: .init(uiColor, uiColor), + size: size, + accessibleText: accessibleText) + } else { + self.init(iconType: iconType, + size: size, + accessibleText: accessibleText) + } } public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(iconType, forKey: .name) try container.encode(size, forKey: .size) - try container.encode(surface, forKey: .surface) + try container.encode(accessibleText, forKey: .accessibleText) + try container.encodeIfPresent(colorConfiguration.lightColor.hexString, forKey: .color) } } - From 062a1cfe64406e4f426e7489f217ceb7de56cb09 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 23 May 2024 11:24:39 -0500 Subject: [PATCH 2/3] accessibleText not required Signed-off-by: Matt Bruce --- MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift b/MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift index b0a0c46e..76e89290 100644 --- a/MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift +++ b/MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift @@ -43,7 +43,7 @@ extension Tilelet.DescriptiveIcon: Codable { let name = try container.decode(Icon.Name.self, forKey: .name) let size = try container.decodeIfPresent(Icon.Size.self, forKey: .size) ?? .medium let color = try container.decodeIfPresent(Color.self, forKey: .color) - let accessibleText = try? container.decode(String.self, forKey: .accessibleText) + let accessibleText = try container.decodeIfPresent(String.self, forKey: .accessibleText) if let uiColor = color?.uiColor { self.init(name: name, colorConfiguration: .init(uiColor, uiColor), @@ -78,7 +78,7 @@ extension Tilelet.DirectionalIcon: Codable { let iconType = try container.decodeIfPresent(IconType.self, forKey: .name) ?? .rightArrow let size = try container.decodeIfPresent(IconSize.self, forKey: .size) ?? .medium let color = try container.decodeIfPresent(Color.self, forKey: .color) - let accessibleText = try? container.decode(String.self, forKey: .accessibleText) + let accessibleText = try container.decodeIfPresent(String.self, forKey: .accessibleText) if let uiColor = color?.uiColor { self.init(iconType: iconType, colorConfiguration: .init(uiColor, uiColor), From d8f642258f638fa531fb83559b72a0d6ad56e623 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 23 May 2024 11:25:52 -0500 Subject: [PATCH 3/3] encodeIfPresent Signed-off-by: Matt Bruce --- MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift b/MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift index 76e89290..9d874675 100644 --- a/MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift +++ b/MVMCoreUI/Atomic/Extensions/VDS-Tilelet+Codable.swift @@ -60,7 +60,7 @@ extension Tilelet.DescriptiveIcon: Codable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(name, forKey: .name) try container.encode(size, forKey: .size) - try container.encode(accessibleText, forKey: .accessibleText) + try container.encodeIfPresent(accessibleText, forKey: .accessibleText) try container.encodeIfPresent(colorConfiguration.lightColor.hexString, forKey: .color) } } @@ -95,7 +95,7 @@ extension Tilelet.DirectionalIcon: Codable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(iconType, forKey: .name) try container.encode(size, forKey: .size) - try container.encode(accessibleText, forKey: .accessibleText) + try container.encodeIfPresent(accessibleText, forKey: .accessibleText) try container.encodeIfPresent(colorConfiguration.lightColor.hexString, forKey: .color) } }