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] 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)