From 7c05d9fcc75a67cd1c45bcaa8939eb98bc4bd0f4 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 12 Jan 2022 15:54:36 -0600 Subject: [PATCH] refactored out setting form field validity within validation refactored validate method to return tuple and again not mess with setting formfield validity Signed-off-by: Matt Bruce --- .../Rules/Rules/RulesProtocol.swift | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/MVMCoreUI/FormUIHelpers/Rules/Rules/RulesProtocol.swift b/MVMCoreUI/FormUIHelpers/Rules/Rules/RulesProtocol.swift index 37cd1828..1727cbe2 100644 --- a/MVMCoreUI/FormUIHelpers/Rules/Rules/RulesProtocol.swift +++ b/MVMCoreUI/FormUIHelpers/Rules/Rules/RulesProtocol.swift @@ -53,7 +53,6 @@ public extension RulesProtocol { if let validity = previousFieldValidity[formKey], !validity, fieldValidity { fieldValidity = false } - (formField as? FormRuleWatcherFieldProtocol)?.setValidity(fieldValidity, rule: self) valid = valid && fieldValidity previousValidity[formKey] = fieldValidity } @@ -66,19 +65,28 @@ public protocol RulesContainerProtocol{ } public extension RulesContainerProtocol { - func validate(_ fields: [String: FormFieldProtocol]) -> Bool { + /// This validation for Rules for the Validation or for Effects. + /// - Parameters: + /// - fields: Fields for the group + /// - setValidity: Since this function is for validation, this bool determines if you should set the FormFields.setValidity for a rule. + /// this method can be called for Form Validation and Effect Validation (this doesn't affect the submital of the form) + /// - Returns: Tuple(valid, fieldValidity) + /// - valid: bool for all rules + /// - fieldValidity: accumulation of all fieldKey: valid + func validate(_ fields: [String: FormFieldProtocol]) -> (valid: Bool, fieldValidity: [String:Bool] ) { // Validate each rule. var valid = true var previousValidity: [String: Bool] = [:] for rule in self.rules { - //validate the rule against the fields let tuple = rule.validate(fields, previousValidity) - + if let ruleId = rule.ruleId { + print("validation ruleId: \(ruleId) value: \(tuple) \nfields: \(rule.fields)" ) + } //merge the fieldValidity previousValidity = previousValidity.merging(tuple.fieldValidity) { (_, new) in new } valid = valid && tuple.valid } - return valid + return (valid: valid, fieldValidity: previousValidity) } }