From 537da03d2c334974523aa0801f238a0e83db6dcd Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 15 Mar 2021 16:37:32 -0500 Subject: [PATCH 1/2] refactored to use the new handler registration in ModelRestry Signed-off-by: Matt Bruce --- MVMCoreUI/Atomic/MoleculeObjectMapping.swift | 11 ++++------- MVMCoreUI/Atomic/Organisms/Stack.swift | 2 +- MVMCoreUI/Atomic/Protocols/MoleculeViewProtocol.swift | 3 ++- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/MVMCoreUI/Atomic/MoleculeObjectMapping.swift b/MVMCoreUI/Atomic/MoleculeObjectMapping.swift index 3dfed18d..f868169d 100644 --- a/MVMCoreUI/Atomic/MoleculeObjectMapping.swift +++ b/MVMCoreUI/Atomic/MoleculeObjectMapping.swift @@ -9,9 +9,6 @@ import Foundation @objcMembers public class MoleculeObjectMapping: NSObject { - - public var moleculeMapping: [String: MoleculeViewProtocol.Type] = [:] - /// Returns the mapping object stored in the singleton public static func shared() -> Self? { return MVMCoreActionUtility.initializerClassCheck(CoreUIObject.sharedInstance()?.moleculeMap, classToVerify: self) as? Self @@ -19,18 +16,17 @@ import Foundation /// Registers the model with the model registry and the view with the mapper. public func register(viewClass: V.Type, viewModelClass: M.Type) { - try? ModelRegistry.register(viewModelClass) - moleculeMapping.updateValue(viewClass, forKey: viewModelClass.identifier) + try? ModelRegistry.register(handler: viewClass, for: viewModelClass) } /// Returns the type of molecule view for the given model public func getMoleculeClass(_ model: MoleculeModelProtocol) -> MoleculeViewProtocol.Type? { - return moleculeMapping[model.moleculeName] + return ModelRegistry.getHandler(model) as? MoleculeViewProtocol.Type } /// Creates a molecule with the given model. public func createMolecule(_ model: MoleculeModelProtocol, delegateObject: MVMCoreUIDelegateObject? = nil, additionalData: [AnyHashable: Any]? = nil) -> MoleculeViewProtocol? { - guard let type = moleculeMapping[model.moleculeName] else { return nil } + guard let type = getMoleculeClass(model) else { return nil } return type.init(model: model, delegateObject, additionalData) } @@ -286,3 +282,4 @@ import Foundation } } } + diff --git a/MVMCoreUI/Atomic/Organisms/Stack.swift b/MVMCoreUI/Atomic/Organisms/Stack.swift index 29646f2e..e2772f5d 100644 --- a/MVMCoreUI/Atomic/Organisms/Stack.swift +++ b/MVMCoreUI/Atomic/Organisms/Stack.swift @@ -199,7 +199,7 @@ open class Stack: Container where T: (StackModelProtocol & MoleculeModelProto } var name = "stack<" for case let item in model.molecules { - if let moleculeClass = MoleculeObjectMapping.shared()?.moleculeMapping[item.moleculeName], + if let moleculeClass = MoleculeObjectMapping.shared()?.getMoleculeClass(item), let nameForReuse = moleculeClass.nameForReuse(with: item, delegateObject) { name.append(nameForReuse + ",") } else { diff --git a/MVMCoreUI/Atomic/Protocols/MoleculeViewProtocol.swift b/MVMCoreUI/Atomic/Protocols/MoleculeViewProtocol.swift index a8600c79..e4ebe78a 100644 --- a/MVMCoreUI/Atomic/Protocols/MoleculeViewProtocol.swift +++ b/MVMCoreUI/Atomic/Protocols/MoleculeViewProtocol.swift @@ -9,7 +9,7 @@ import UIKit import MVMCore.MVMCoreViewProtocol -public protocol MoleculeViewProtocol: UIView { +public protocol MoleculeViewProtocol: UIView, ModelHandlerProtocol{ /// Initializes the view with the model init(model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) @@ -31,6 +31,7 @@ public protocol MoleculeViewProtocol: UIView { } extension MoleculeViewProtocol { + /// Calls set with model public init(model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { self.init(frame: .zero) From 7f0cc11f2ab0bfe5f047322cfda61e08b917e22d Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 18 Mar 2021 10:08:19 -0500 Subject: [PATCH 2/2] formatting update Signed-off-by: Matt Bruce --- MVMCoreUI/Atomic/Protocols/MoleculeViewProtocol.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MVMCoreUI/Atomic/Protocols/MoleculeViewProtocol.swift b/MVMCoreUI/Atomic/Protocols/MoleculeViewProtocol.swift index e4ebe78a..da90798d 100644 --- a/MVMCoreUI/Atomic/Protocols/MoleculeViewProtocol.swift +++ b/MVMCoreUI/Atomic/Protocols/MoleculeViewProtocol.swift @@ -9,7 +9,7 @@ import UIKit import MVMCore.MVMCoreViewProtocol -public protocol MoleculeViewProtocol: UIView, ModelHandlerProtocol{ +public protocol MoleculeViewProtocol: UIView, ModelHandlerProtocol { /// Initializes the view with the model init(model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?)