From 51b327a6d64a3f471b124c3bc3e4b95c9677c703 Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Wed, 27 May 2020 14:21:14 -0400 Subject: [PATCH] fixes for decoding --- MVMCoreUI/Atomic/MoleculeObjectMapping.swift | 6 +++++- .../Buttons/NavigationButtomModelProtocol.swift | 4 ++-- .../Buttons/NavigationImageButtonModel.swift | 2 +- .../Buttons/NavigationLabelButtonModel.swift | 2 +- .../NavigationBar/NavigationItemModel.swift | 15 ++++++++------- .../NavigationItemModelProtocol.swift | 6 +++--- 6 files changed, 20 insertions(+), 15 deletions(-) diff --git a/MVMCoreUI/Atomic/MoleculeObjectMapping.swift b/MVMCoreUI/Atomic/MoleculeObjectMapping.swift index 42b700ac..b968cecc 100644 --- a/MVMCoreUI/Atomic/MoleculeObjectMapping.swift +++ b/MVMCoreUI/Atomic/MoleculeObjectMapping.swift @@ -134,8 +134,12 @@ import Foundation // Other Molecules MoleculeObjectMapping.shared()?.register(viewClass: DoughnutChartView.self, viewModelClass: DoughnutChartModel.self) - try? ModelRegistry.register(NavigationItemModel.self) + // Navigation Molecules + try? ModelRegistry.register(NavigationItemModel.self) + try? ModelRegistry.register(NavigationImageButtonModel.self) + try? ModelRegistry.register(NavigationLabelButtonModel.self) + // Other Organisms MoleculeObjectMapping.shared()?.register(viewClass: Carousel.self, viewModelClass: CarouselModel.self) MoleculeObjectMapping.shared()?.register(viewClass: BarsIndicatorView.self, viewModelClass: BarsCarouselIndicatorModel.self) diff --git a/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationButtomModelProtocol.swift b/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationButtomModelProtocol.swift index 3f38ce43..057f2bf5 100644 --- a/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationButtomModelProtocol.swift +++ b/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationButtomModelProtocol.swift @@ -1,5 +1,5 @@ // -// NavigationButtomModelProtocol.swift +// NavigationButtonModelProtocol.swift // MVMCoreUI // // Created by Scott Pfeil on 5/27/20. @@ -8,7 +8,7 @@ import Foundation -public protocol NavigationButtomModelProtocol: ButtonModelProtocol { +public protocol NavigationButtonModelProtocol: ButtonModelProtocol { //var color: Color? { get set } func createNavigationItemButton(delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) -> BarButtonItem diff --git a/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationImageButtonModel.swift b/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationImageButtonModel.swift index b4173e8b..be820ec9 100644 --- a/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationImageButtonModel.swift +++ b/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationImageButtonModel.swift @@ -7,7 +7,7 @@ import Foundation -public class NavigationImageButtonModel: NavigationButtomModelProtocol, MoleculeModelProtocol { +public class NavigationImageButtonModel: NavigationButtonModelProtocol, MoleculeModelProtocol { public var backgroundColor: Color? public static var identifier: String = "navigationImageButton" diff --git a/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationLabelButtonModel.swift b/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationLabelButtonModel.swift index 6b253459..699b1ed0 100644 --- a/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationLabelButtonModel.swift +++ b/MVMCoreUI/Atomic/Molecules/NavigationBar/Buttons/NavigationLabelButtonModel.swift @@ -8,7 +8,7 @@ import Foundation -public class NavigationLabelButtonModel: NavigationButtomModelProtocol, MoleculeModelProtocol { +public class NavigationLabelButtonModel: NavigationButtonModelProtocol, MoleculeModelProtocol { public var backgroundColor: Color? public static var identifier: String = "navigationLabelButton" diff --git a/MVMCoreUI/Atomic/Molecules/NavigationBar/NavigationItemModel.swift b/MVMCoreUI/Atomic/Molecules/NavigationBar/NavigationItemModel.swift index f29f1e38..05aec0a3 100644 --- a/MVMCoreUI/Atomic/Molecules/NavigationBar/NavigationItemModel.swift +++ b/MVMCoreUI/Atomic/Molecules/NavigationBar/NavigationItemModel.swift @@ -18,16 +18,15 @@ public class NavigationItemModel: NavigationItemModelProtocol, MoleculeModelProt public var backgroundColor: Color? public var tintColor: Color public var line: LineModel? - public var backButton: (NavigationButtomModelProtocol & MoleculeModelProtocol)? - public var additionalLeftButtons: [(NavigationButtomModelProtocol & MoleculeModelProtocol)]? - public var additionalRightButtons: [(NavigationButtomModelProtocol & MoleculeModelProtocol)]? + public var backButton: (NavigationButtonModelProtocol & MoleculeModelProtocol)? = NavigationImageButtonModel(with: "back", action: ActionBackModel()) + public var additionalLeftButtons: [(NavigationButtonModelProtocol & MoleculeModelProtocol)]? + public var additionalRightButtons: [(NavigationButtonModelProtocol & MoleculeModelProtocol)]? public init() { hidden = false backgroundColor = Color(uiColor: .white) tintColor = Color(uiColor: .black) line = LineModel(type: .standard) - backButton = NavigationImageButtonModel(with: "back", action: ActionBackModel()) } private enum CodingKeys: String, CodingKey { @@ -50,9 +49,11 @@ public class NavigationItemModel: NavigationItemModelProtocol, MoleculeModelProt backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor) ?? Color(uiColor: .white) tintColor = try typeContainer.decodeIfPresent(Color.self, forKey: .tintColor) ?? Color(uiColor: .black) line = try typeContainer.decodeIfPresent(LineModel.self, forKey: .line) - backButton = try typeContainer.decodeModelIfPresent(codingKey: .backButton) ?? NavigationImageButtonModel(with: "back", action: ActionBackModel()) - additionalLeftButtons = try typeContainer.decodeModels(codingKey: .additionalLeftButtons) - additionalRightButtons = try typeContainer.decodeModels(codingKey: .additionalRightButtons) + if let backButton: (NavigationButtonModelProtocol & MoleculeModelProtocol) = try typeContainer.decodeModelIfPresent(codingKey: .backButton) { + self.backButton = backButton + } + additionalLeftButtons = try typeContainer.decodeModelsIfPresent(codingKey: .additionalLeftButtons) + additionalRightButtons = try typeContainer.decodeModelsIfPresent(codingKey: .additionalRightButtons) } open func encode(to encoder: Encoder) throws { diff --git a/MVMCoreUI/Atomic/Protocols/ModelProtocols/NavigationItemModelProtocol.swift b/MVMCoreUI/Atomic/Protocols/ModelProtocols/NavigationItemModelProtocol.swift index e6491ac3..e4017428 100644 --- a/MVMCoreUI/Atomic/Protocols/ModelProtocols/NavigationItemModelProtocol.swift +++ b/MVMCoreUI/Atomic/Protocols/ModelProtocols/NavigationItemModelProtocol.swift @@ -14,7 +14,7 @@ public protocol NavigationItemModelProtocol { var backgroundColor: Color? { get set } var tintColor: Color { get set } var line: LineModel? { get set } - var backButton: (NavigationButtomModelProtocol & MoleculeModelProtocol)? { get set } - var additionalLeftButtons: [(NavigationButtomModelProtocol & MoleculeModelProtocol)]? { get set } - var additionalRightButtons: [(NavigationButtomModelProtocol & MoleculeModelProtocol)]? { get set } + var backButton: (NavigationButtonModelProtocol & MoleculeModelProtocol)? { get set } + var additionalLeftButtons: [(NavigationButtonModelProtocol & MoleculeModelProtocol)]? { get set } + var additionalRightButtons: [(NavigationButtonModelProtocol & MoleculeModelProtocol)]? { get set } }