make the error throwable

This commit is contained in:
Pfeil, Scott Robert 2020-01-14 09:12:09 -05:00
parent 198ebe722b
commit 447df655df
6 changed files with 23 additions and 18 deletions

View File

@ -32,6 +32,6 @@ extension MFViewController: MoleculeDelegateProtocol {
} }
public extension MFViewController { public extension MFViewController {
@objc func parsePageJSON() { @objc func parsePageJSON() throws {
} }
} }

View File

@ -96,7 +96,15 @@
- (BOOL)shouldFinishProcessingLoad:(nonnull MVMCoreLoadObject *)loadObject error:(MVMCoreErrorObject *_Nonnull *_Nonnull)error { - (BOOL)shouldFinishProcessingLoad:(nonnull MVMCoreLoadObject *)loadObject error:(MVMCoreErrorObject *_Nonnull *_Nonnull)error {
self.pageType = loadObject.pageType; self.pageType = loadObject.pageType;
self.loadObject = loadObject; self.loadObject = loadObject;
[self parsePageJSON];
NSError *parseError = nil;
[self parsePageJSONAndReturnError:&parseError];
if (parseError) {
if (error) {
*error = [MVMCoreErrorObject createErrorObjectForNSError:parseError location:[[MVMCoreLoadHandler sharedGlobal] errorLocationForRequest:loadObject]];
}
return false;
}
// Verifies all modules needed are loaded. // Verifies all modules needed are loaded.
return [MFViewController verifyRequiredModulesLoadedForLoadObject:loadObject error:error]; return [MFViewController verifyRequiredModulesLoadedForLoadObject:loadObject error:error];
@ -250,7 +258,8 @@
- (BOOL)newPageLoaded:(nonnull NSDictionary *)page { - (BOOL)newPageLoaded:(nonnull NSDictionary *)page {
self.loadObject.pageJSON = page; self.loadObject.pageJSON = page;
[self parsePageJSON]; NSError *parseError = nil;
[self parsePageJSONAndReturnError:&parseError];
return YES; return YES;
} }

View File

@ -14,15 +14,11 @@ public protocol TemplateProtocol: class {
} }
public extension TemplateProtocol where Self: MFViewController { public extension TemplateProtocol where Self: MFViewController {
func parseTemplateJSON() { func parseTemplateJSON() throws {
guard let pageJSON = self.loadObject?.pageJSON else { return } guard let pageJSON = self.loadObject?.pageJSON else { return }
do { let data = try JSONSerialization.data(withJSONObject: pageJSON)
let data = try JSONSerialization.data(withJSONObject: pageJSON) let decoder = JSONDecoder()
let decoder = JSONDecoder() let templateModel = try decoder.decode(TemplateModel.self, from: data)
let templateModel = try decoder.decode(TemplateModel.self, from: data) self.templateModel = templateModel
self.templateModel = templateModel
} catch {
MVMCoreUILoggingHandler.logDebugMessage(withDelegate: "error: \(error)")
}
} }
} }

View File

@ -14,8 +14,8 @@ open class MoleculeListTemplate: ThreeLayerTableViewController, TemplateProtocol
var observer: NSKeyValueObservation? var observer: NSKeyValueObservation?
public var templateModel: ListPageTemplateModel? public var templateModel: ListPageTemplateModel?
public override func parsePageJSON() { @objc public override func parsePageJSON() throws {
parseTemplateJSON() try parseTemplateJSON()
} }
open override var loadObject: MVMCoreLoadObject? { open override var loadObject: MVMCoreLoadObject? {

View File

@ -12,8 +12,8 @@ open class MoleculeStackTemplate: ThreeLayerViewController, TemplateProtocol {
var observer: NSKeyValueObservation? var observer: NSKeyValueObservation?
public var templateModel: StackPageTemplateModel? public var templateModel: StackPageTemplateModel?
public override func parsePageJSON() { public override func parsePageJSON() throws {
parseTemplateJSON() try parseTemplateJSON()
} }
open override var loadObject: MVMCoreLoadObject? { open override var loadObject: MVMCoreLoadObject? {

View File

@ -11,8 +11,8 @@ import UIKit
@objcMembers open class ThreeLayerTemplate: ThreeLayerViewController, TemplateProtocol { @objcMembers open class ThreeLayerTemplate: ThreeLayerViewController, TemplateProtocol {
public var templateModel: ThreeLayerPageTemplateModel? public var templateModel: ThreeLayerPageTemplateModel?
public override func parsePageJSON() { @objc public override func parsePageJSON() throws {
parseTemplateJSON() try parseTemplateJSON()
} }
override open func viewDidLoad() { override open func viewDidLoad() {