Reset optional and required module mapping at the time of request.

This commit is contained in:
Hedden, Kyle Matthew 2023-10-17 16:26:38 -04:00
parent f2df0f52e6
commit 3dc05bea61

View File

@ -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.