diff --git a/MVMCoreUI/BaseClasses/Button.swift b/MVMCoreUI/BaseClasses/Button.swift index 1802e25d..a94cafe8 100644 --- a/MVMCoreUI/BaseClasses/Button.swift +++ b/MVMCoreUI/BaseClasses/Button.swift @@ -79,7 +79,7 @@ public typealias ButtonAction = (Button) -> () addActionBlock(event: .touchUpInside) { [weak self] sender in guard let self = self, let actionModel = actionModel else { return } - Self.performButtonAction(with: actionModel, button: self, delegateObject: delegateObject, additionalData: additionalData) + Self.performButtonAction(with: actionModel, button: self, delegateObject: delegateObject, additionalData: additionalData, sourceModel: self.model) } } diff --git a/MVMCoreUI/BaseControllers/ViewController.swift b/MVMCoreUI/BaseControllers/ViewController.swift index 8a22e23a..3cbd2e50 100644 --- a/MVMCoreUI/BaseControllers/ViewController.swift +++ b/MVMCoreUI/BaseControllers/ViewController.swift @@ -449,8 +449,8 @@ import UIKit } /// Override this method to avoid adding form params. - open func addFormParams(_ requestParameters: MVMCoreRequestParameters) { - formValidator?.addFormParams(requestParameters: requestParameters) + open func addFormParams(requestParameters: MVMCoreRequestParameters, actionInformation: [AnyHashable: Any]?, additionalData: [AnyHashable: Any]?) { + formValidator?.addFormParams(requestParameters: requestParameters, model: additionalData?[KeySourceModel] as? MoleculeModelProtocol & FormFieldProtocol) } public func handleFieldErrors(_ fieldErrors: [Any]?, loadObject: MVMCoreLoadObject) { @@ -472,7 +472,7 @@ import UIKit //-------------------------------------------------- open func handleOpenPage(for requestParameters: MVMCoreRequestParameters, actionInformation: [AnyHashable: Any]?, additionalData: [AnyHashable: Any]?) { - addFormParams(requestParameters) + addFormParams(requestParameters: requestParameters, actionInformation: actionInformation, additionalData: additionalData) requestParameters.parentPageType = loadObject?.pageJSON?.optionalStringForKey("parentPageType") var pageForwardedData = additionalData ?? [:] executeBehaviors { (behavior: PageLocalDataShareBehavior) in diff --git a/MVMCoreUI/FormUIHelpers/FormValidator.swift b/MVMCoreUI/FormUIHelpers/FormValidator.swift index 82022b4c..28029397 100644 --- a/MVMCoreUI/FormUIHelpers/FormValidator.swift +++ b/MVMCoreUI/FormUIHelpers/FormValidator.swift @@ -112,20 +112,19 @@ import MVMCore // MARK: Form params // TODO: Temporary hacks, rewrite architecture to support this. -@objc public extension FormValidator { +public extension FormValidator { - @objc func addFormParams(requestParameters: MVMCoreRequestParameters) { - let groupName = getGroupName(forPageType: requestParameters.pageType) ?? FormValidator.defaultGroupName - let formParams = self.getFormParams(forGroup: groupName) + func addFormParams(requestParameters: MVMCoreRequestParameters, model: (MoleculeModelProtocol & FormFieldProtocol)?) { + let groupName = model?.groupName ?? FormValidator.defaultGroupName + let formParams = getFormParams(forGroup: groupName) requestParameters.add(formParams) } - @objc func getFormParams( forGroup groupName: String) -> [String: Any] { + @objc func getFormParams(forGroup groupName: String) -> [String: Any] { var extraParam: [String: Any] = [:] for (fieldKey, field) in fields { - if let formFieldValue = field.formFieldValue(), - groupName == field.groupName { + if let formFieldValue = field.formFieldValue(), groupName == field.groupName { extraParam[fieldKey] = formFieldValue } } @@ -133,19 +132,3 @@ import MVMCore return extraParam } } - -// TODO: Temporary hacks, rewrite architecture to support this. -public extension FormValidator { - - func getGroupName(forPageType pageType: String?) -> String? { - - for actionItem in groupWatchers { - if let buttonModel = actionItem as? ButtonModel, - pageType == (buttonModel.action as? ActionOpenPageProtocol)?.pageType { - return buttonModel.groupName - } - } - - return nil - } -}