From fb2a866f14ca7efd5c4b4e2c0b1aa1fe6910b7a2 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 28 Feb 2024 16:07:57 -0600 Subject: [PATCH] added depreciated coding keys also reverted to non-hard typed LabelModel as done previous. Signed-off-by: Matt Bruce --- .../LockUps/TitleLockupModel.swift | 43 ++++++++++++++++--- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/MVMCoreUI/Atomic/Molecules/DesignedComponents/LockUps/TitleLockupModel.swift b/MVMCoreUI/Atomic/Molecules/DesignedComponents/LockUps/TitleLockupModel.swift index ce70a338..3c9f25fd 100644 --- a/MVMCoreUI/Atomic/Molecules/DesignedComponents/LockUps/TitleLockupModel.swift +++ b/MVMCoreUI/Atomic/Molecules/DesignedComponents/LockUps/TitleLockupModel.swift @@ -74,20 +74,33 @@ public class TitleLockupModel: MoleculeModelProtocol, ParentMoleculeModelProtoco let typeContainer = try decoder.container(keyedBy: CodingKeys.self) id = try typeContainer.decodeIfPresent(String.self, forKey: .id) ?? UUID().uuidString textAlignment = try typeContainer.decodeIfPresent(TitleLockup.TextAlignment.self, forKey: .textAlignment) ?? .left - title = try typeContainer.decode(LabelModel.self, forKey: .title) + title = try typeContainer.decodeMolecule(codingKey: .title) eyebrow = try typeContainer.decodeIfPresent(LabelModel.self, forKey: .eyebrow) - subTitle = try typeContainer.decodeIfPresent(LabelModel.self, forKey: .subTitle) - subTitleColor = try typeContainer.decodeIfPresent(Use.self, forKey: .subTitleColor) ?? .primary + subTitle = try typeContainer.decodeMoleculeIfPresent(codingKey: .subTitle) + + /// look for color hex code + if let color = try? typeContainer.decodeIfPresent(Color.self, forKey: .subTitleColor) { + self.subTitleColor = color.uiColor.isDark() ? .primary : .secondary + + } else if let subTitleColor = try? typeContainer.decodeIfPresent(Use.self, forKey: .subTitleColor) { + self.subTitleColor = subTitleColor + + } else { + subTitleColor = .primary + } if let newAlignment = try typeContainer.decodeIfPresent(VDS.TitleLockup.TextAlignment.self, forKey: .alignment) { alignment = newAlignment } - if let invertedStatus = try typeContainer.decodeIfPresent(Bool.self, forKey: .inverted) { - inverted = invertedStatus + if let inverted = try typeContainer.decodeIfPresent(Bool.self, forKey: .inverted) { + self.inverted = inverted + } else { + try setInverted(deprecatedFrom: decoder) } + } - + public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(id, forKey: .id) @@ -156,6 +169,24 @@ public class TitleLockupModel: MoleculeModelProtocol, ParentMoleculeModelProtoco return .init(text: subTitle.text, textColor: subTitleColor, textAttributes: attrs, numberOfLines: subTitle.numberOfLines ?? 0) } + + private enum DeprecatedCodingKeys: String, CodingKey { + case titleColor + case backgroundColor + } + + private func setInverted(deprecatedFrom decoder: Decoder) throws { + let typeContainer = try decoder.container(keyedBy: DeprecatedCodingKeys.self) + + if let titleColor = try typeContainer.decodeIfPresent(Color.self, forKey: .titleColor) { + inverted = !titleColor.uiColor.isDark() + } + + if let backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor) { + inverted = !backgroundColor.uiColor.isDark() + } + } + } extension TitleLockupModel {