mvm_core_ui/MVMCoreUI/Templates/ThreeLayerPageTemplateModel.swift
Pfeil, Scott Robert 42b57dcd5d Cleaning
2020-01-21 12:10:48 -05:00

58 lines
2.1 KiB
Swift

//
// ThreeLayerPageTemplateModel.swift
// MVMCoreUI
//
// Created by Suresh, Kamlesh on 11/22/19.
// Copyright © 2019 Verizon Wireless. All rights reserved.
//
import Foundation
@objcMembers public class ThreeLayerPageTemplateModel: TemplateModelProtocol {
public static var identifier: String = "threeLayer"
public var pageType: String
public var screenHeading: String?
public var isAtomicTabs: Bool?
public var header: MoleculeProtocol?
public var middle: MoleculeProtocol?
public var footer: MoleculeProtocol?
public init(pageType: String, header: MoleculeProtocol?, middle: MoleculeProtocol?, footer: MoleculeProtocol?) {
self.pageType = pageType
self.header = header
self.middle = middle
self.footer = footer
}
private enum CodingKeys: String, CodingKey {
case pageType
case screenHeading
case header
case footer
case middle
case isAtomicTabs
}
required public init(from decoder: Decoder) throws {
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
pageType = try typeContainer.decode(String.self, forKey: .pageType)
screenHeading = try typeContainer.decodeIfPresent(String.self, forKey: .screenHeading)
isAtomicTabs = try typeContainer.decodeIfPresent(Bool.self, forKey: .isAtomicTabs)
header = try typeContainer.decodeMoleculeIfPresent(codingKey: .header)
header = try typeContainer.decodeMoleculeIfPresent(codingKey: .middle)
footer = try typeContainer.decodeMoleculeIfPresent(codingKey: .footer)
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(pageType, forKey: .pageType)
try container.encodeIfPresent(screenHeading, forKey: .screenHeading)
try container.encodeIfPresent(isAtomicTabs, forKey: .isAtomicTabs)
try container.encodeModelIfPresent(header, forKey: .header)
try container.encodeModelIfPresent(header, forKey: .middle)
try container.encodeModelIfPresent(footer, forKey: .footer)
}
}