From c67ad2c5368df89b7b0ecad542d09458f446805b Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Thu, 12 Aug 2021 13:39:13 -0400 Subject: [PATCH 1/2] hot fix --- .../Templates/MoleculeListTemplate.swift | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/MVMCoreUI/Atomic/Templates/MoleculeListTemplate.swift b/MVMCoreUI/Atomic/Templates/MoleculeListTemplate.swift index ac862337..fa404172 100644 --- a/MVMCoreUI/Atomic/Templates/MoleculeListTemplate.swift +++ b/MVMCoreUI/Atomic/Templates/MoleculeListTemplate.swift @@ -188,10 +188,8 @@ open class MoleculeListTemplate: ThreeLayerTableViewController, TemplateProtocol open func newData(for molecule: MoleculeModelProtocol) { //TODO: expand for header, navigation, etc - let json = molecule.toJSON() guard let index = moleculesInfo?.firstIndex(where: { (moleculeInfo) -> Bool in - //TODO: check for molecule protocol eqaulity - if json == moleculeInfo.molecule.toJSON() { + if equal(moleculeA: molecule, moleculeB: moleculeInfo.molecule) { return true } else if let parent = moleculeInfo.molecule as? ParentMoleculeModelProtocol { // Get all molecules of the same type for faster check. @@ -201,8 +199,8 @@ open class MoleculeListTemplate: ThreeLayerTableViewController, TemplateProtocol } return accumulator } - for molecule in molecules { - if json == molecule.toJSON() { + for moleculeB in molecules { + if equal(moleculeA: molecule, moleculeB: moleculeB) { return true } } @@ -283,6 +281,18 @@ open class MoleculeListTemplate: ThreeLayerTableViewController, TemplateProtocol return modules } + + /// Checks if the two molecules are equal + private func equal(moleculeA: MoleculeModelProtocol, moleculeB: MoleculeModelProtocol) -> Bool { + // TODO: move this to a better approach, maybe a UUID for each model. + // Do instance check + if let classMoleculeA = moleculeA as? NSObjectProtocol, + let classMoleculeB = moleculeB as? NSObjectProtocol { + return classMoleculeA === classMoleculeB + } + // Do json check + return moleculeA.toJSON() == moleculeB.toJSON() + } } extension MoleculeListTemplate: MoleculeListProtocol { @@ -320,9 +330,7 @@ extension MoleculeListTemplate: MoleculeListProtocol { open func getIndexPath(for molecule: ListItemModelProtocol & MoleculeModelProtocol) -> IndexPath? { guard let index = moleculesInfo?.firstIndex(where: { (moleculeInfo) -> Bool in - //TODO: check for molecule protocol eqaulity - let json = moleculeInfo.molecule.toJSON() - return json == molecule.toJSON() + return equal(moleculeA: molecule, moleculeB: moleculeInfo.molecule) }) else { return nil } return IndexPath(row: index, section: 0) From 30fd351d2eed63e30d27864a4ae3f8ff6157a498 Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Thu, 12 Aug 2021 13:41:56 -0400 Subject: [PATCH 2/2] remove structs for now --- .../HorizontalCombinationViews/ImageHeadlineBodyModel.swift | 2 +- .../Molecules/LeftRightViews/ActionDetailWithImageModel.swift | 2 +- .../ToggleMolecules/HeadlineBodyLinkToggleModel.swift | 2 +- .../VerticalCombinationViews/HeadlineBodyLinkModel.swift | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/ImageHeadlineBodyModel.swift b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/ImageHeadlineBodyModel.swift index a8133620..2c188d6b 100644 --- a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/ImageHeadlineBodyModel.swift +++ b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/ImageHeadlineBodyModel.swift @@ -8,7 +8,7 @@ import Foundation -public struct ImageHeadlineBodyModel: MoleculeModelProtocol { +public class ImageHeadlineBodyModel: MoleculeModelProtocol { //-------------------------------------------------- // MARK: - Properties //-------------------------------------------------- diff --git a/MVMCoreUI/Atomic/Molecules/LeftRightViews/ActionDetailWithImageModel.swift b/MVMCoreUI/Atomic/Molecules/LeftRightViews/ActionDetailWithImageModel.swift index d617f053..4cd2db26 100644 --- a/MVMCoreUI/Atomic/Molecules/LeftRightViews/ActionDetailWithImageModel.swift +++ b/MVMCoreUI/Atomic/Molecules/LeftRightViews/ActionDetailWithImageModel.swift @@ -8,7 +8,7 @@ import Foundation -public struct ActionDetailWithImageModel: MoleculeModelProtocol { +public class ActionDetailWithImageModel: MoleculeModelProtocol { public static var identifier: String = "actionDetailWithImage" public var moleculeName: String = ActionDetailWithImageModel.identifier public var backgroundColor: Color? diff --git a/MVMCoreUI/Atomic/Molecules/LeftRightViews/ToggleMolecules/HeadlineBodyLinkToggleModel.swift b/MVMCoreUI/Atomic/Molecules/LeftRightViews/ToggleMolecules/HeadlineBodyLinkToggleModel.swift index 917bf5dc..19c1f4d6 100644 --- a/MVMCoreUI/Atomic/Molecules/LeftRightViews/ToggleMolecules/HeadlineBodyLinkToggleModel.swift +++ b/MVMCoreUI/Atomic/Molecules/LeftRightViews/ToggleMolecules/HeadlineBodyLinkToggleModel.swift @@ -7,7 +7,7 @@ // import Foundation -public struct HeadlineBodyLinkToggleModel: MoleculeModelProtocol { +public class HeadlineBodyLinkToggleModel: MoleculeModelProtocol { public static var identifier: String = "headlineBodyLinkToggle" public var moleculeName: String = HeadlineBodyLinkToggleModel.identifier public var backgroundColor: Color? diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/HeadlineBodyLinkModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/HeadlineBodyLinkModel.swift index f8a0d57e..9f16e3ce 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/HeadlineBodyLinkModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/HeadlineBodyLinkModel.swift @@ -9,7 +9,7 @@ import Foundation -public struct HeadlineBodyLinkModel: MoleculeModelProtocol { +public class HeadlineBodyLinkModel: MoleculeModelProtocol { //-------------------------------------------------- // MARK: - Properties //--------------------------------------------------