From 7e38657b63aee00d4b326c0855b53d7e57796f9a Mon Sep 17 00:00:00 2001 From: "Murugan, Vimal" Date: Tue, 14 Jan 2020 20:48:15 +0530 Subject: [PATCH] review comments updated models updated --- .../Models/Molecules/NumberedListModel.swift | 18 ++++++++++++++++-- .../Models/Molecules/UnOrderedListModel.swift | 19 ++++++++++++++++++- .../Molecules/LabelRightMoleculesStack.swift | 17 ++++++----------- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/MVMCoreUI/Models/Molecules/NumberedListModel.swift b/MVMCoreUI/Models/Molecules/NumberedListModel.swift index 496db1b1..380c193f 100644 --- a/MVMCoreUI/Models/Molecules/NumberedListModel.swift +++ b/MVMCoreUI/Models/Molecules/NumberedListModel.swift @@ -11,9 +11,23 @@ import Foundation @objcMembers public class NumberedListModel: OrderListProtocol { public var backgroundColor: Color? public static var identifier: String = "numberedList" - public var list: [LabelModel] + public var list: [MoleculeProtocol] + + enum CodingKeys: String, CodingKey { + case list + } + + public required init(from decoder: Decoder) throws { + let typeContainer = try decoder.container(keyedBy: CodingKeys.self) + list = try typeContainer.decodeMolecules(codingKey: .list) + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeModels(list, forKey: .list) + } } public protocol OrderListProtocol: MoleculeProtocol { - var list: [LabelModel] {get} + var list: [MoleculeProtocol] {get} } diff --git a/MVMCoreUI/Models/Molecules/UnOrderedListModel.swift b/MVMCoreUI/Models/Molecules/UnOrderedListModel.swift index 2c80dc6f..8d3280d9 100644 --- a/MVMCoreUI/Models/Molecules/UnOrderedListModel.swift +++ b/MVMCoreUI/Models/Molecules/UnOrderedListModel.swift @@ -12,5 +12,22 @@ import Foundation public var backgroundColor: Color? public static var identifier: String = "unOrderedList" public var bulletChar: String? - public var list: [LabelModel] + public var list: [MoleculeProtocol] + + enum CodingKeys: String, CodingKey { + case bulletChar + case list + } + + public required init(from decoder: Decoder) throws { + let typeContainer = try decoder.container(keyedBy: CodingKeys.self) + bulletChar = try typeContainer.decodeIfPresent(String.self, forKey: .bulletChar) + list = try typeContainer.decodeMolecules(codingKey: .list) + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(bulletChar, forKey: .bulletChar) + try container.encodeModels(list, forKey: .list) + } } diff --git a/MVMCoreUI/Molecules/LabelRightMoleculesStack.swift b/MVMCoreUI/Molecules/LabelRightMoleculesStack.swift index 312927fd..693df09c 100644 --- a/MVMCoreUI/Molecules/LabelRightMoleculesStack.swift +++ b/MVMCoreUI/Molecules/LabelRightMoleculesStack.swift @@ -110,10 +110,6 @@ class LeftLabelRightMoleculeContainer: View { setContentHuggingPriority(.defaultHigh, for: .vertical) setContentHuggingPriority(.defaultHigh, for: .horizontal) - rightContainer.setContentCompressionResistancePriority(.defaultHigh, for: .vertical) - rightContainer.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal) - leftContainer.setContentHuggingPriority(.required, for: .horizontal) - leftContainer.setContentHuggingPriority(.required, for: .vertical) updateLeftViewWidthConstraint(percentage) } @@ -132,21 +128,20 @@ class LeftLabelRightMoleculeContainer: View { } public override func setWithModel(_ model: MoleculeProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) { - let previousMoleculeName = model?.moleculeName + let previousMoleculeName = self.rightMoleculeName super.setWithModel(model, delegateObject, additionalData) removeSubviewsInRightContainer() - guard let labelModel = model as? LabelModel else { + label.text = leftText + rightMoleculeName = model?.moleculeName + guard let validModel = model else { return } - - label.text = leftText - rightMoleculeName = labelModel.moleculeName //For reuse purpose check that allready added molecule is same if let rightMolecule = self.rightMolecule, previousMoleculeName == rightMoleculeName { - rightMolecule.setWithModel(labelModel, delegateObject, additionalData) + rightMolecule.setWithModel(validModel, delegateObject, additionalData) addView(rightMolecule) } else { - if let molecule = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(labelModel, delegateObject, false) { + if let molecule = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(validModel, delegateObject, false) { addView(molecule) } }