diff --git a/MVMCore/MVMCore/ActionHandling/ActionOpenPageHandler.swift b/MVMCore/MVMCore/ActionHandling/ActionOpenPageHandler.swift index 989971a..2f79085 100644 --- a/MVMCore/MVMCore/ActionHandling/ActionOpenPageHandler.swift +++ b/MVMCore/MVMCore/ActionHandling/ActionOpenPageHandler.swift @@ -11,9 +11,19 @@ import Foundation open class ActionOpenPageHandler: MVMCoreJSONActionHandlerProtocol { required public init() {} + func requestParamaters(for model: ActionOpenPageModel) -> MVMCoreRequestParameters { + let requestParameters = model.requestParameters.copy() as! MVMCoreRequestParameters + if let pageType = requestParameters.pageType { + // Re-evaluate required & optional modules as action models might have been generated prior to recent additions to the mapping. + requestParameters.modules = MVMCoreViewControllerMappingObject.shared()?.modulesRequired(forPageType: pageType) as? [String] + requestParameters.optionalModules = MVMCoreViewControllerMappingObject.shared()?.modulesOptional(forPageType: pageType) as? [String] + } + return requestParameters + } + open func performAction(with JSON: [AnyHashable : Any], model: ActionModelProtocol, delegateObject: DelegateObject?, additionalData: [AnyHashable : Any]?) async throws { guard let model = model as? ActionOpenPageModel else { return } - let requestParameters: MVMCoreRequestParameters = model.requestParameters.copy() as! MVMCoreRequestParameters + let requestParameters = requestParamaters(for: model) do { if let closure = delegateObject?.actionDelegate?.handleOpenPage { // Legacy code will use the old handler function and break the task chain here.