From 767ca5c58ad6131c80630a5c41f0c68b5ff8a29f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Csubrra7=E2=80=9D?= <“ramya.subramaniam@verizon.com”> Date: Tue, 14 Jul 2020 21:05:35 +0530 Subject: [PATCH 1/8] updating handle action when server send response --- .../Templates/ModalMoleculeListTemplate.swift | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift b/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift index 63140e6e..bfae5168 100644 --- a/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift +++ b/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift @@ -7,15 +7,12 @@ // import UIKit - - open class ModalMoleculeListTemplate: MoleculeListTemplate { //-------------------------------------------------- // MARK: - Properties //-------------------------------------------------- public var closeButton: Button? - //-------------------------------------------------- // MARK: - Lifecycle //-------------------------------------------------- @@ -23,8 +20,14 @@ open class ModalMoleculeListTemplate: MoleculeListTemplate { override open func handleNewData() { super.handleNewData() - closeButton = MVMCoreUICommonViewsUtility.addCloseButton(to: view, action: { _ in - MVMCoreNavigationHandler.shared()?.removeCurrentViewController() + closeButton = MVMCoreUICommonViewsUtility.addCloseButton(to: view, action: { [weak self] _ in + if let self = self { + guard let actionMap = self.loadObject?.pageJSON?.optionalDictionaryWithChainOfKeysOrIndexes([KeyButtonMap,"CloseButton"]) else { + MVMCoreNavigationHandler.shared()?.removeCurrentViewController() + return + } + MVMCoreActionHandler.shared()?.handleAction(with: actionMap, additionalData: nil, delegateObject: self.delegateObjectIVar) + } }) } From 0dd1538d7c3a54d911e74377f74c43d810e3cc6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Csubrra7=E2=80=9D?= <“ramya.subramaniam@verizon.com”> Date: Tue, 14 Jul 2020 21:07:32 +0530 Subject: [PATCH 2/8] adding back the space --- MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift b/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift index bfae5168..47655762 100644 --- a/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift +++ b/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift @@ -7,12 +7,15 @@ // import UIKit + + open class ModalMoleculeListTemplate: MoleculeListTemplate { //-------------------------------------------------- // MARK: - Properties //-------------------------------------------------- public var closeButton: Button? + //-------------------------------------------------- // MARK: - Lifecycle //-------------------------------------------------- From da41081289b2ffe7439fa74c8e670acabce8095a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Csubrra7=E2=80=9D?= <“ramya.subramaniam@verizon.com”> Date: Wed, 15 Jul 2020 17:11:45 +0530 Subject: [PATCH 3/8] updating review comments --- .../Templates/ModalMoleculeListTemplate.swift | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift b/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift index 47655762..2dffb26f 100644 --- a/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift +++ b/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift @@ -15,7 +15,7 @@ open class ModalMoleculeListTemplate: MoleculeListTemplate { //-------------------------------------------------- public var closeButton: Button? - + //-------------------------------------------------- // MARK: - Lifecycle //-------------------------------------------------- @@ -24,13 +24,14 @@ open class ModalMoleculeListTemplate: MoleculeListTemplate { super.handleNewData() closeButton = MVMCoreUICommonViewsUtility.addCloseButton(to: view, action: { [weak self] _ in - if let self = self { - guard let actionMap = self.loadObject?.pageJSON?.optionalDictionaryWithChainOfKeysOrIndexes([KeyButtonMap,"CloseButton"]) else { - MVMCoreNavigationHandler.shared()?.removeCurrentViewController() - return - } - MVMCoreActionHandler.shared()?.handleAction(with: actionMap, additionalData: nil, delegateObject: self.delegateObjectIVar) + guard let self = self else { + return } + guard let actionMap = self.loadObject?.pageJSON?.optionalDictionaryWithChainOfKeysOrIndexes([KeyButtonMap,"CloseButton"]) else { + MVMCoreActionHandler.shared()?.handleAction(with: ActionBackModel().toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) + return + } + MVMCoreActionHandler.shared()?.handleAction(with: actionMap, additionalData: nil, delegateObject: self.delegateObjectIVar) }) } From 3827edcf6ee64627dfa39e4937356bcf171bb202 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Csubrra7=E2=80=9D?= <“ramya.subramaniam@verizon.com”> Date: Wed, 15 Jul 2020 17:13:16 +0530 Subject: [PATCH 4/8] updating review comments --- .../Atomic/Templates/ModalMoleculeStackTemplate.swift | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift b/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift index 937cc91d..57a58a3c 100644 --- a/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift +++ b/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift @@ -13,9 +13,14 @@ open class ModalMoleculeStackTemplate: MoleculeStackTemplate { override open func handleNewData() { super.handleNewData() _ = MVMCoreUICommonViewsUtility.addCloseButton(to: view, action: {[weak self] _ in - if let _ = self { - MVMCoreNavigationHandler.shared()?.removeCurrentViewController() - } + guard let self = self else { + return + } + guard let actionMap = self.loadObject?.pageJSON?.optionalDictionaryWithChainOfKeysOrIndexes([KeyButtonMap,"CloseButton"]) else { + MVMCoreActionHandler.shared()?.handleAction(with: ActionBackModel().toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) + return + } + MVMCoreActionHandler.shared()?.handleAction(with: actionMap, additionalData: nil, delegateObject: self.delegateObjectIVar) }) } From 77be31f47fa798b87ec484ec4cb53e0412c4abf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Csubrra7=E2=80=9D?= <“ramya.subramaniam@verizon.com”> Date: Wed, 15 Jul 2020 21:21:19 +0530 Subject: [PATCH 5/8] updating Review comments to decode from Model --- .../Templates/ListPageTemplateModel.swift | 4 ++++ .../Templates/ModalMoleculeListTemplate.swift | 4 ++-- .../Templates/ModalMoleculeStackTemplate.swift | 17 ++++++++--------- .../Templates/StackPageTemplateModel.swift | 4 ++++ 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/MVMCoreUI/Atomic/Templates/ListPageTemplateModel.swift b/MVMCoreUI/Atomic/Templates/ListPageTemplateModel.swift index b2b52573..9be4113e 100644 --- a/MVMCoreUI/Atomic/Templates/ListPageTemplateModel.swift +++ b/MVMCoreUI/Atomic/Templates/ListPageTemplateModel.swift @@ -18,6 +18,7 @@ import Foundation } public var molecules: [ListItemModelProtocol & MoleculeModelProtocol]? public var line: LineModel? + public var closeAction: ActionModelProtocol? //-------------------------------------------------- // MARK: - Initializer @@ -36,6 +37,7 @@ import Foundation private enum CodingKeys: String, CodingKey { case molecules case line + case closeAction } //-------------------------------------------------- @@ -46,6 +48,7 @@ import Foundation let typeContainer = try decoder.container(keyedBy: CodingKeys.self) molecules = try typeContainer.decodeModelsIfPresent(codingKey: .molecules) line = try typeContainer.decodeIfPresent(LineModel.self, forKey: .line) + closeAction = try typeContainer.decodeModelIfPresent(codingKey: .closeAction) try super.init(from: decoder) } @@ -54,6 +57,7 @@ import Foundation var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeModelsIfPresent(molecules, forKey: .molecules) try container.encode(line, forKey: .line) + try container.encodeModelIfPresent(closeAction, forKey: .closeAction) } } diff --git a/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift b/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift index 2dffb26f..f10abe52 100644 --- a/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift +++ b/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift @@ -27,11 +27,11 @@ open class ModalMoleculeListTemplate: MoleculeListTemplate { guard let self = self else { return } - guard let actionMap = self.loadObject?.pageJSON?.optionalDictionaryWithChainOfKeysOrIndexes([KeyButtonMap,"CloseButton"]) else { + guard let actionMap = self.templateModel?.closeAction else { MVMCoreActionHandler.shared()?.handleAction(with: ActionBackModel().toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) return } - MVMCoreActionHandler.shared()?.handleAction(with: actionMap, additionalData: nil, delegateObject: self.delegateObjectIVar) + MVMCoreActionHandler.shared()?.handleAction(with: actionMap.toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) }) } diff --git a/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift b/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift index 57a58a3c..a4f79e7e 100644 --- a/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift +++ b/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift @@ -13,15 +13,14 @@ open class ModalMoleculeStackTemplate: MoleculeStackTemplate { override open func handleNewData() { super.handleNewData() _ = MVMCoreUICommonViewsUtility.addCloseButton(to: view, action: {[weak self] _ in - guard let self = self else { - return - } - guard let actionMap = self.loadObject?.pageJSON?.optionalDictionaryWithChainOfKeysOrIndexes([KeyButtonMap,"CloseButton"]) else { - MVMCoreActionHandler.shared()?.handleAction(with: ActionBackModel().toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) - return - } - MVMCoreActionHandler.shared()?.handleAction(with: actionMap, additionalData: nil, delegateObject: self.delegateObjectIVar) + guard let self = self else { + return + } + guard let actionMap = self.templateModel?.closeAction else { + MVMCoreActionHandler.shared()?.handleAction(with: ActionBackModel().toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) + return + } + MVMCoreActionHandler.shared()?.handleAction(with: actionMap.toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) }) } - } diff --git a/MVMCoreUI/Atomic/Templates/StackPageTemplateModel.swift b/MVMCoreUI/Atomic/Templates/StackPageTemplateModel.swift index f21a0421..40d97814 100644 --- a/MVMCoreUI/Atomic/Templates/StackPageTemplateModel.swift +++ b/MVMCoreUI/Atomic/Templates/StackPageTemplateModel.swift @@ -14,6 +14,7 @@ import Foundation return "stack" } public var moleculeStack: StackModel + public var closeAction: ActionModelProtocol? public init(pageType: String, moleculeStack: StackModel) { self.moleculeStack = moleculeStack @@ -22,11 +23,13 @@ import Foundation private enum CodingKeys: String, CodingKey { case stack + case closeAction } required public init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) moleculeStack = try typeContainer.decode(StackModel.self, forKey: .stack) + closeAction = try typeContainer.decodeModelIfPresent(codingKey: .closeAction) try super.init(from: decoder) } @@ -34,5 +37,6 @@ import Foundation try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(moleculeStack, forKey: .stack) + try container.encodeModelIfPresent(closeAction, forKey: .closeAction) } } From 0ee938cf576f6a8cb246975a1f1d075a836ca39c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Csubrra7=E2=80=9D?= <“ramya.subramaniam@verizon.com”> Date: Wed, 15 Jul 2020 23:38:49 +0530 Subject: [PATCH 6/8] adding modal class specific models --- MVMCoreUI.xcodeproj/project.pbxproj | 8 ++++ .../Templates/ListPageTemplateModel.swift | 4 -- .../ModalListPageTemplateModel.swift | 46 +++++++++++++++++++ .../Templates/ModalMoleculeListTemplate.swift | 2 +- .../ModalMoleculeStackTemplate.swift | 10 ++-- .../ModalStackPageTemplateModel.swift | 41 +++++++++++++++++ .../Templates/StackPageTemplateModel.swift | 4 -- 7 files changed, 101 insertions(+), 14 deletions(-) create mode 100644 MVMCoreUI/Atomic/Templates/ModalListPageTemplateModel.swift create mode 100644 MVMCoreUI/Atomic/Templates/ModalStackPageTemplateModel.swift diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index 65c0e81d..74bbe551 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -105,6 +105,8 @@ 0A9D09212433796500D2E6C0 /* CarouselIndicatorModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A9D091B2433796500D2E6C0 /* CarouselIndicatorModel.swift */; }; 0A9D09222433796500D2E6C0 /* CarouselIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A9D091C2433796500D2E6C0 /* CarouselIndicator.swift */; }; 0AA33B3A2398524F0067DD0F /* Toggle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AA33B392398524F0067DD0F /* Toggle.swift */; }; + 0AB000BA24BF63490090C5E7 /* ModalListPageTemplateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AB000B924BF63490090C5E7 /* ModalListPageTemplateModel.swift */; }; + 0AB000BC24BF64A50090C5E7 /* ModalStackPageTemplateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AB000BB24BF64A50090C5E7 /* ModalStackPageTemplateModel.swift */; }; 0AB764D124460F6300E7FE72 /* UIDatePicker+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AB764D024460F6300E7FE72 /* UIDatePicker+Extension.swift */; }; 0AB764D324460FA400E7FE72 /* UIPickerView+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AB764D224460FA400E7FE72 /* UIPickerView+Extension.swift */; }; 0ABD136D237CAD1E0081388D /* DateDropdownEntryField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABD136C237CAD1E0081388D /* DateDropdownEntryField.swift */; }; @@ -568,6 +570,8 @@ 0A9D091C2433796500D2E6C0 /* CarouselIndicator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CarouselIndicator.swift; sourceTree = ""; }; 0AA33B33239813C50067DD0F /* UIColor+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Extension.swift"; sourceTree = ""; }; 0AA33B392398524F0067DD0F /* Toggle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Toggle.swift; sourceTree = ""; }; + 0AB000B924BF63490090C5E7 /* ModalListPageTemplateModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModalListPageTemplateModel.swift; sourceTree = ""; }; + 0AB000BB24BF64A50090C5E7 /* ModalStackPageTemplateModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModalStackPageTemplateModel.swift; sourceTree = ""; }; 0AB764D024460F6300E7FE72 /* UIDatePicker+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDatePicker+Extension.swift"; sourceTree = ""; }; 0AB764D224460FA400E7FE72 /* UIPickerView+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIPickerView+Extension.swift"; sourceTree = ""; }; 0ABD136C237CAD1E0081388D /* DateDropdownEntryField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateDropdownEntryField.swift; sourceTree = ""; }; @@ -1611,6 +1615,8 @@ D264FAA4243F66A500D98315 /* CollectionTemplateItemProtocol.swift */, D264FA8B243BCD8E00D98315 /* CollectionTemplateModel.swift */, D264FA8D243BCD9A00D98315 /* CollectionTemplate.swift */, + 0AB000B924BF63490090C5E7 /* ModalListPageTemplateModel.swift */, + 0AB000BB24BF64A50090C5E7 /* ModalStackPageTemplateModel.swift */, ); path = Templates; sourceTree = ""; @@ -2474,6 +2480,7 @@ D23EA7FB2475F09800D60C34 /* CarouselItemProtocol.swift in Sources */, D2E2A9A323E096B1000B42E6 /* DisableableModelProtocol.swift in Sources */, D29DF11821E6805F003B2FB9 /* NSLayoutConstraint+MFConvenience.m in Sources */, + 0AB000BC24BF64A50090C5E7 /* ModalStackPageTemplateModel.swift in Sources */, 27F973532466074500CAB5C5 /* PageBehavior.swift in Sources */, 94C2D9A323872C110006CF46 /* LabelAttributeStrikeThroughModel.swift in Sources */, D28A838523CCCA8900DFE4FC /* ScrollerModel.swift in Sources */, @@ -2502,6 +2509,7 @@ D236E5B5241FEB1000C38625 /* ListTwoColumnPriceDescriptionModel.swift in Sources */, D2B18B922361E65A00A9AEDC /* CoreUIObject.swift in Sources */, 014AA72E23C5059B006F3E93 /* StackCenteredPageTemplateModel.swift in Sources */, + 0AB000BA24BF63490090C5E7 /* ModalListPageTemplateModel.swift in Sources */, D2A514632213643100345BFB /* MoleculeStackCenteredTemplate.swift in Sources */, 011D959D2404536F000E3791 /* RuleAnyValueChangedModel.swift in Sources */, D260105923D0A92900764D80 /* ContainerProtocol.swift in Sources */, diff --git a/MVMCoreUI/Atomic/Templates/ListPageTemplateModel.swift b/MVMCoreUI/Atomic/Templates/ListPageTemplateModel.swift index 9be4113e..b2b52573 100644 --- a/MVMCoreUI/Atomic/Templates/ListPageTemplateModel.swift +++ b/MVMCoreUI/Atomic/Templates/ListPageTemplateModel.swift @@ -18,7 +18,6 @@ import Foundation } public var molecules: [ListItemModelProtocol & MoleculeModelProtocol]? public var line: LineModel? - public var closeAction: ActionModelProtocol? //-------------------------------------------------- // MARK: - Initializer @@ -37,7 +36,6 @@ import Foundation private enum CodingKeys: String, CodingKey { case molecules case line - case closeAction } //-------------------------------------------------- @@ -48,7 +46,6 @@ import Foundation let typeContainer = try decoder.container(keyedBy: CodingKeys.self) molecules = try typeContainer.decodeModelsIfPresent(codingKey: .molecules) line = try typeContainer.decodeIfPresent(LineModel.self, forKey: .line) - closeAction = try typeContainer.decodeModelIfPresent(codingKey: .closeAction) try super.init(from: decoder) } @@ -57,7 +54,6 @@ import Foundation var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeModelsIfPresent(molecules, forKey: .molecules) try container.encode(line, forKey: .line) - try container.encodeModelIfPresent(closeAction, forKey: .closeAction) } } diff --git a/MVMCoreUI/Atomic/Templates/ModalListPageTemplateModel.swift b/MVMCoreUI/Atomic/Templates/ModalListPageTemplateModel.swift new file mode 100644 index 00000000..0c59514d --- /dev/null +++ b/MVMCoreUI/Atomic/Templates/ModalListPageTemplateModel.swift @@ -0,0 +1,46 @@ +// +// ModalListPageTemplateModel.swift +// MVMCoreUI +// +// Created by Subramaniam, Ramya on 15/07/20. +// Copyright © 2020 Verizon Wireless. All rights reserved. +// + +import Foundation + +@objcMembers open class ModalListPageTemplateModel: ListPageTemplateModel { + //-------------------------------------------------- + // MARK: - Properties + //-------------------------------------------------- + + open override class var identifier: String { + return "modalList" + } + + public var closeAction: ActionModelProtocol? + + //-------------------------------------------------- + // MARK: - Keys + //-------------------------------------------------- + +// private enum CodingKeys: String, CodingKey { +// case closeAction +// } +// +// //-------------------------------------------------- +// // MARK: - Codec +// //-------------------------------------------------- +// +// required public init(from decoder: Decoder) throws { +// let typeContainer = try decoder.container(keyedBy: CodingKeys.self) +// closeAction = try typeContainer.decodeModelIfPresent(codingKey: .closeAction) +// try super.init(from: decoder) +// } +// +// open override func encode(to encoder: Encoder) throws { +// try super.encode(to: encoder) +// var container = encoder.container(keyedBy: CodingKeys.self) +// try container.encodeModelIfPresent(closeAction, forKey: .closeAction) +// } +} + diff --git a/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift b/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift index f10abe52..f3df7a01 100644 --- a/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift +++ b/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift @@ -27,7 +27,7 @@ open class ModalMoleculeListTemplate: MoleculeListTemplate { guard let self = self else { return } - guard let actionMap = self.templateModel?.closeAction else { + guard let model = self.templateModel as? ModalListPageTemplateModel, let actionMap = model.closeAction else { MVMCoreActionHandler.shared()?.handleAction(with: ActionBackModel().toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) return } diff --git a/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift b/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift index a4f79e7e..2a953789 100644 --- a/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift +++ b/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift @@ -16,11 +16,11 @@ open class ModalMoleculeStackTemplate: MoleculeStackTemplate { guard let self = self else { return } - guard let actionMap = self.templateModel?.closeAction else { - MVMCoreActionHandler.shared()?.handleAction(with: ActionBackModel().toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) - return - } - MVMCoreActionHandler.shared()?.handleAction(with: actionMap.toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) +// guard let actionMap = self.templateModel?.closeAction else { +// MVMCoreActionHandler.shared()?.handleAction(with: ActionBackModel().toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) +// return +// } +// MVMCoreActionHandler.shared()?.handleAction(with: actionMap.toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) }) } } diff --git a/MVMCoreUI/Atomic/Templates/ModalStackPageTemplateModel.swift b/MVMCoreUI/Atomic/Templates/ModalStackPageTemplateModel.swift new file mode 100644 index 00000000..ba880843 --- /dev/null +++ b/MVMCoreUI/Atomic/Templates/ModalStackPageTemplateModel.swift @@ -0,0 +1,41 @@ +// +// ModalStackPageTemplateModel.swift +// MVMCoreUI +// +// Created by Subramaniam, Ramya on 15/07/20. +// Copyright © 2020 Verizon Wireless. All rights reserved. +// + +import Foundation + +@objcMembers public class ModalStackPageTemplateModel: ThreeLayerModelBase { + public override class var identifier: String { + return "modalStack" + } + public var moleculeStack: StackModel + public var closeAction: ActionModelProtocol? + + public init(pageType: String, moleculeStack: StackModel) { + self.moleculeStack = moleculeStack + super.init(pageType: pageType) + } + + private enum CodingKeys: String, CodingKey { + case stack + case closeAction + } + + required public init(from decoder: Decoder) throws { + let typeContainer = try decoder.container(keyedBy: CodingKeys.self) + moleculeStack = try typeContainer.decode(StackModel.self, forKey: .stack) + closeAction = try typeContainer.decodeModelIfPresent(codingKey: .closeAction) + try super.init(from: decoder) + } + + public override func encode(to encoder: Encoder) throws { + try super.encode(to: encoder) + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(moleculeStack, forKey: .stack) + try container.encodeModelIfPresent(closeAction, forKey: .closeAction) + } +} diff --git a/MVMCoreUI/Atomic/Templates/StackPageTemplateModel.swift b/MVMCoreUI/Atomic/Templates/StackPageTemplateModel.swift index 40d97814..f21a0421 100644 --- a/MVMCoreUI/Atomic/Templates/StackPageTemplateModel.swift +++ b/MVMCoreUI/Atomic/Templates/StackPageTemplateModel.swift @@ -14,7 +14,6 @@ import Foundation return "stack" } public var moleculeStack: StackModel - public var closeAction: ActionModelProtocol? public init(pageType: String, moleculeStack: StackModel) { self.moleculeStack = moleculeStack @@ -23,13 +22,11 @@ import Foundation private enum CodingKeys: String, CodingKey { case stack - case closeAction } required public init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) moleculeStack = try typeContainer.decode(StackModel.self, forKey: .stack) - closeAction = try typeContainer.decodeModelIfPresent(codingKey: .closeAction) try super.init(from: decoder) } @@ -37,6 +34,5 @@ import Foundation try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(moleculeStack, forKey: .stack) - try container.encodeModelIfPresent(closeAction, forKey: .closeAction) } } From 66b03705742a50dd3f9a00a25b1082b86fed40e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Csubrra7=E2=80=9D?= <“ramya.subramaniam@verizon.com”> Date: Thu, 16 Jul 2020 21:26:10 +0530 Subject: [PATCH 7/8] updating specific model class change for Modal template --- .../ModalListPageTemplateModel.swift | 38 +++++++++---------- .../Templates/ModalMoleculeListTemplate.swift | 5 +++ .../ModalMoleculeStackTemplate.swift | 16 +++++--- .../ModalStackPageTemplateModel.swift | 11 +----- .../Templates/MoleculeStackTemplate.swift | 5 +++ 5 files changed, 41 insertions(+), 34 deletions(-) diff --git a/MVMCoreUI/Atomic/Templates/ModalListPageTemplateModel.swift b/MVMCoreUI/Atomic/Templates/ModalListPageTemplateModel.swift index 0c59514d..64168e88 100644 --- a/MVMCoreUI/Atomic/Templates/ModalListPageTemplateModel.swift +++ b/MVMCoreUI/Atomic/Templates/ModalListPageTemplateModel.swift @@ -23,24 +23,24 @@ import Foundation // MARK: - Keys //-------------------------------------------------- -// private enum CodingKeys: String, CodingKey { -// case closeAction -// } -// -// //-------------------------------------------------- -// // MARK: - Codec -// //-------------------------------------------------- -// -// required public init(from decoder: Decoder) throws { -// let typeContainer = try decoder.container(keyedBy: CodingKeys.self) -// closeAction = try typeContainer.decodeModelIfPresent(codingKey: .closeAction) -// try super.init(from: decoder) -// } -// -// open override func encode(to encoder: Encoder) throws { -// try super.encode(to: encoder) -// var container = encoder.container(keyedBy: CodingKeys.self) -// try container.encodeModelIfPresent(closeAction, forKey: .closeAction) -// } + private enum CodingKeys: String, CodingKey { + case closeAction + } + + //-------------------------------------------------- + // MARK: - Codec + //-------------------------------------------------- + + required public init(from decoder: Decoder) throws { + let typeContainer = try decoder.container(keyedBy: CodingKeys.self) + closeAction = try typeContainer.decodeModelIfPresent(codingKey: .closeAction) + try super.init(from: decoder) + } + + open override func encode(to encoder: Encoder) throws { + try super.encode(to: encoder) + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeModelIfPresent(closeAction, forKey: .closeAction) + } } diff --git a/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift b/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift index f3df7a01..ac22cd18 100644 --- a/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift +++ b/MVMCoreUI/Atomic/Templates/ModalMoleculeListTemplate.swift @@ -20,6 +20,11 @@ open class ModalMoleculeListTemplate: MoleculeListTemplate { // MARK: - Lifecycle //-------------------------------------------------- + // For subclassing the model. + open override func decodeTemplate(using decoder: JSONDecoder, from data: Data) throws -> ModalListPageTemplateModel { + return try decoder.decode(ModalListPageTemplateModel.self, from: data) + } + override open func handleNewData() { super.handleNewData() diff --git a/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift b/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift index 2a953789..78a1e157 100644 --- a/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift +++ b/MVMCoreUI/Atomic/Templates/ModalMoleculeStackTemplate.swift @@ -10,17 +10,23 @@ import UIKit open class ModalMoleculeStackTemplate: MoleculeStackTemplate { + // For subclassing the model. + open override func decodeTemplate(using decoder: JSONDecoder, from data: Data) throws -> ModalStackPageTemplateModel { + return try decoder.decode(ModalStackPageTemplateModel.self, from: data) + } + override open func handleNewData() { super.handleNewData() _ = MVMCoreUICommonViewsUtility.addCloseButton(to: view, action: {[weak self] _ in guard let self = self else { return } -// guard let actionMap = self.templateModel?.closeAction else { -// MVMCoreActionHandler.shared()?.handleAction(with: ActionBackModel().toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) -// return -// } -// MVMCoreActionHandler.shared()?.handleAction(with: actionMap.toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) + + guard let model = self.templateModel as? ModalStackPageTemplateModel, let actionMap = model.closeAction else { + MVMCoreActionHandler.shared()?.handleAction(with: ActionBackModel().toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) + return + } + MVMCoreActionHandler.shared()?.handleAction(with: actionMap.toJSON(), additionalData: nil, delegateObject: self.delegateObjectIVar) }) } } diff --git a/MVMCoreUI/Atomic/Templates/ModalStackPageTemplateModel.swift b/MVMCoreUI/Atomic/Templates/ModalStackPageTemplateModel.swift index ba880843..4e878595 100644 --- a/MVMCoreUI/Atomic/Templates/ModalStackPageTemplateModel.swift +++ b/MVMCoreUI/Atomic/Templates/ModalStackPageTemplateModel.swift @@ -8,26 +8,18 @@ import Foundation -@objcMembers public class ModalStackPageTemplateModel: ThreeLayerModelBase { +@objcMembers public class ModalStackPageTemplateModel: StackPageTemplateModel { public override class var identifier: String { return "modalStack" } - public var moleculeStack: StackModel public var closeAction: ActionModelProtocol? - public init(pageType: String, moleculeStack: StackModel) { - self.moleculeStack = moleculeStack - super.init(pageType: pageType) - } - private enum CodingKeys: String, CodingKey { - case stack case closeAction } required public init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) - moleculeStack = try typeContainer.decode(StackModel.self, forKey: .stack) closeAction = try typeContainer.decodeModelIfPresent(codingKey: .closeAction) try super.init(from: decoder) } @@ -35,7 +27,6 @@ import Foundation public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) - try container.encode(moleculeStack, forKey: .stack) try container.encodeModelIfPresent(closeAction, forKey: .closeAction) } } diff --git a/MVMCoreUI/Atomic/Templates/MoleculeStackTemplate.swift b/MVMCoreUI/Atomic/Templates/MoleculeStackTemplate.swift index 3d47ae3f..5154d9a6 100644 --- a/MVMCoreUI/Atomic/Templates/MoleculeStackTemplate.swift +++ b/MVMCoreUI/Atomic/Templates/MoleculeStackTemplate.swift @@ -17,6 +17,11 @@ open class MoleculeStackTemplate: ThreeLayerViewController, TemplateProtocol { bottomViewOutsideOfScroll = templateModel?.anchorFooter ?? false super.handleNewData() } + + // For subclassing the model. + open func decodeTemplate(using decoder: JSONDecoder, from data: Data) throws -> StackPageTemplateModel { + return try decoder.decode(StackPageTemplateModel.self, from: data) + } open override func parsePageJSON() throws { try parseTemplate(json: loadObject?.pageJSON) From bbcbdf8f3da6bc47c5c703aec7197b06563652b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Csubrra7=E2=80=9D?= <“ramya.subramaniam@verizon.com”> Date: Thu, 16 Jul 2020 21:29:55 +0530 Subject: [PATCH 8/8] updating model class positions on top of respective templates --- MVMCoreUI.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index 74bbe551..8dbf2f56 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -1599,12 +1599,14 @@ D2092356244FA1EF0044AD09 /* ThreeLayerModelBase.swift */, 014AA72823C5059B006F3E93 /* StackPageTemplateModel.swift */, D2A5146022121FBF00345BFB /* MoleculeStackTemplate.swift */, + 0AB000BB24BF64A50090C5E7 /* ModalStackPageTemplateModel.swift */, 942C378D2412F5B60066E45E /* ModalMoleculeStackTemplate.swift */, 014AA72923C5059B006F3E93 /* StackCenteredPageTemplateModel.swift */, D2A514622213643100345BFB /* MoleculeStackCenteredTemplate.swift */, D28A837A23C928DA00DFE4FC /* MoleculeListCellProtocol.swift */, 014AA72C23C5059B006F3E93 /* ListPageTemplateModel.swift */, D2E1FAE02268E81D00AEFD8C /* MoleculeListTemplate.swift */, + 0AB000B924BF63490090C5E7 /* ModalListPageTemplateModel.swift */, 942C378B2412F4FA0066E45E /* ModalMoleculeListTemplate.swift */, 014AA72A23C5059B006F3E93 /* ThreeLayerPageTemplateModel.swift */, D2D6CD4122E78FAB00D701B8 /* ThreeLayerTemplate.swift */, @@ -1615,8 +1617,6 @@ D264FAA4243F66A500D98315 /* CollectionTemplateItemProtocol.swift */, D264FA8B243BCD8E00D98315 /* CollectionTemplateModel.swift */, D264FA8D243BCD9A00D98315 /* CollectionTemplate.swift */, - 0AB000B924BF63490090C5E7 /* ModalListPageTemplateModel.swift */, - 0AB000BB24BF64A50090C5E7 /* ModalStackPageTemplateModel.swift */, ); path = Templates; sourceTree = "";