move decoding logic to ViewController for overrides.

This commit is contained in:
Kyle Matthew Hedden 2020-06-26 08:59:01 -04:00
parent 3edb3dcfe2
commit 1337e87c3d
2 changed files with 8 additions and 2 deletions

View File

@ -14,13 +14,15 @@ public protocol TemplateProtocol: AnyObject {
} }
public extension TemplateProtocol where Self: ViewController { public extension TemplateProtocol where Self: ViewController {
func parseTemplate(json: [AnyHashable: Any]?) throws { func parseTemplate(json: [AnyHashable: Any]?) throws {
guard let pageJSON = json else { return } guard let pageJSON = json else { return }
let data = try JSONSerialization.data(withJSONObject: pageJSON) let data = try JSONSerialization.data(withJSONObject: pageJSON)
let decoder = JSONDecoder() let decoder = JSONDecoder()
try decoder.add(delegateObject: delegateObjectIVar) try decoder.add(delegateObject: delegateObjectIVar)
let templateModel = try decoder.decode(TemplateModel.self, from: data) let templateModel = try decodeTemplate(using: decoder, from: data)
self.templateModel = templateModel self.templateModel = templateModel as? TemplateModel
self.pageModel = templateModel as? MVMControllerModelProtocol self.pageModel = templateModel as? MVMControllerModelProtocol
} }
} }

View File

@ -130,6 +130,10 @@ import UIKit
open func parsePageJSON() throws { open func parsePageJSON() throws {
} }
open func decodeTemplate(using decoder: JSONDecoder, from data: Data) throws -> TemplateModel {
return try decoder.decode(TemplateModel.self, from: data)
}
open class func verifyRequiredModulesLoaded(for loadObject: MVMCoreLoadObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject>) -> Bool { open class func verifyRequiredModulesLoaded(for loadObject: MVMCoreLoadObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject>) -> Bool {
guard let pageType = loadObject?.pageType, var modulesRequired = MVMCoreUIViewControllerMappingObject.shared()?.modulesRequired(forPageType: pageType), guard let pageType = loadObject?.pageType, var modulesRequired = MVMCoreUIViewControllerMappingObject.shared()?.modulesRequired(forPageType: pageType),
!modulesRequired.isEmpty else { return true } !modulesRequired.isEmpty else { return true }