From 7c4c9ea43a6e09f4b56a3b53c6df8711af974681 Mon Sep 17 00:00:00 2001 From: Lekshmi S Date: Tue, 29 Sep 2020 17:39:16 +0530 Subject: [PATCH] Code changes based on review comments and added default action noop. --- MVMCoreUI/Atomic/Atoms/Selectors/Heart.swift | 7 ++++++- MVMCoreUI/Atomic/Atoms/Selectors/HeartModel.swift | 12 +++++++----- .../Strings/en.lproj/Localizable.strings | 2 +- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Selectors/Heart.swift b/MVMCoreUI/Atomic/Atoms/Selectors/Heart.swift index 5270fa62..0cdc1f6d 100644 --- a/MVMCoreUI/Atomic/Atoms/Selectors/Heart.swift +++ b/MVMCoreUI/Atomic/Atoms/Selectors/Heart.swift @@ -8,7 +8,7 @@ import UIKit -@objcMembers open class Heart: Control { +@objcMembers open class Heart: Control, MFButtonProtocol { //-------------------------------------------------- // MARK: - Properties @@ -24,6 +24,7 @@ import UIKit public var heartModel: HeartModel? { return model as? HeartModel } + var additionalData: [AnyHashable: Any]? //-------------------------------------------------- // MARK: - Constraints @@ -86,6 +87,7 @@ import UIKit public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { super.set(with: model, delegateObject, additionalData) self.delegateObject = delegateObject + self.additionalData = additionalData guard let model = model as? HeartModel else { return } isSelected = model.isActive } @@ -103,6 +105,9 @@ import UIKit func tapAction() { isSelected = !isSelected + if let heartModel = heartModel { + Button.performButtonAction(with: heartModel.action, button: self, delegateObject: delegateObject, additionalData: additionalData, sourceModel: heartModel) + } setNeedsDisplay() } } diff --git a/MVMCoreUI/Atomic/Atoms/Selectors/HeartModel.swift b/MVMCoreUI/Atomic/Atoms/Selectors/HeartModel.swift index 3fe696f8..b3d168ef 100644 --- a/MVMCoreUI/Atomic/Atoms/Selectors/HeartModel.swift +++ b/MVMCoreUI/Atomic/Atoms/Selectors/HeartModel.swift @@ -18,7 +18,7 @@ open class HeartModel: MoleculeModelProtocol { public var isActive: Bool = false public var activeColor: Color = Color(uiColor: .mvmRed) public var inActiveColor: Color = Color(uiColor: .clear) - public var action: ActionModelProtocol? + public var action: ActionModelProtocol = ActionNoopModel() //-------------------------------------------------- // MARK: - Keys @@ -48,16 +48,18 @@ open class HeartModel: MoleculeModelProtocol { if let inActiveColor = try typeContainer.decodeIfPresent(Color.self, forKey: .inActiveColor) { self.inActiveColor = inActiveColor } - action = try typeContainer.decodeModelIfPresent(codingKey: .action) + if let action: ActionModelProtocol = try typeContainer.decodeModelIfPresent(codingKey: .action) { + self.action = action + } } public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor) try container.encode(moleculeName, forKey: .moleculeName) - try container.encodeIfPresent(isActive, forKey: .isActive) - try container.encodeIfPresent(activeColor, forKey: .activeColor) - try container.encodeIfPresent(inActiveColor, forKey: .inActiveColor) + try container.encode(isActive, forKey: .isActive) + try container.encode(activeColor, forKey: .activeColor) + try container.encode(inActiveColor, forKey: .inActiveColor) try container.encodeModelIfPresent(action, forKey: .action) } } diff --git a/MVMCoreUI/SupportingFiles/Strings/en.lproj/Localizable.strings b/MVMCoreUI/SupportingFiles/Strings/en.lproj/Localizable.strings index 2f8b642b..8cf3e21e 100644 --- a/MVMCoreUI/SupportingFiles/Strings/en.lproj/Localizable.strings +++ b/MVMCoreUI/SupportingFiles/Strings/en.lproj/Localizable.strings @@ -68,7 +68,7 @@ "AccToggleHint" = "double tap to toggle"; // MARK: Heart -"heart" = "Heart"; +"heart" = "Favorite"; "heart_action_hint" = "Double tap to select"; "heart_selected_state" = "Selected"; "heart_not_selected_state" = "Not Selected";