From ff3055a4c77de6528b8b622f2320272b32f5c3a6 Mon Sep 17 00:00:00 2001 From: "Suresh, Kamlesh" Date: Tue, 2 Apr 2019 15:55:16 -0400 Subject: [PATCH] improvement --- MVMCoreUI.xcodeproj/project.pbxproj | 4 - MVMCoreUI/Atoms/Buttons/PrimaryButton.m | 8 -- MVMCoreUI/Atoms/TextFields/MFTextField.m | 16 +--- MVMCoreUI/Models/FormValidator.swift | 15 ++-- MVMCoreUI/Models/MVMCoreUIFormValidator.h | 29 ------- MVMCoreUI/Models/MVMCoreUIFormValidator.m | 75 ------------------- MVMCoreUI/Molecules/MFTextFieldListView.swift | 12 --- .../Protocols/FormValidationProtocol.swift | 4 +- .../MVMCoreUIFormMoleculesProtocol.h | 18 ----- .../MVMCoreUIFormValidationProtocol.h | 29 ------- 10 files changed, 14 insertions(+), 196 deletions(-) delete mode 100644 MVMCoreUI/Models/MVMCoreUIFormValidator.h delete mode 100644 MVMCoreUI/Models/MVMCoreUIFormValidator.m delete mode 100644 MVMCoreUI/Protocols/MVMCoreUIFormMoleculesProtocol.h delete mode 100644 MVMCoreUI/Protocols/MVMCoreUIFormValidationProtocol.h diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index 699ad526..5df32702 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -11,7 +11,6 @@ 0105618E224BBE7700E1557D /* FormValidator+TextFields.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0105618B224BBE7700E1557D /* FormValidator+TextFields.swift */; }; 0105618F224BBE7700E1557D /* FormValidator+FormParams.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0105618C224BBE7700E1557D /* FormValidator+FormParams.swift */; }; 01056191224BBE8000E1557D /* FormValidationProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01056190224BBE7F00E1557D /* FormValidationProtocol.swift */; }; - 01BDA2D722442F59001DACC9 /* MVMCoreUIFormMoleculesProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 01BDA2D622442F59001DACC9 /* MVMCoreUIFormMoleculesProtocol.h */; }; 01DF55E021F8FAA800CC099B /* MFTextFieldListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DF55DF21F8FAA800CC099B /* MFTextFieldListView.swift */; }; 01DF567021FA5AB300CC099B /* TextFieldListFormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */; }; 01E569D3223FFFA500327251 /* ThreeLayerViewController.swift in Headers */ = {isa = PBXBuildFile; fileRef = D2A5146A2214905000345BFB /* ThreeLayerViewController.swift */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -168,7 +167,6 @@ 0105618B224BBE7700E1557D /* FormValidator+TextFields.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "FormValidator+TextFields.swift"; sourceTree = ""; }; 0105618C224BBE7700E1557D /* FormValidator+FormParams.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "FormValidator+FormParams.swift"; sourceTree = ""; }; 01056190224BBE7F00E1557D /* FormValidationProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormValidationProtocol.swift; sourceTree = ""; }; - 01BDA2D622442F59001DACC9 /* MVMCoreUIFormMoleculesProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIFormMoleculesProtocol.h; sourceTree = ""; }; 01DF55DF21F8FAA800CC099B /* MFTextFieldListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MFTextFieldListView.swift; sourceTree = ""; }; 01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextFieldListFormViewController.swift; sourceTree = ""; }; D206997521FB8A0B00CAE0DE /* MVMCoreUINavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUINavigationController.h; sourceTree = ""; }; @@ -340,7 +338,6 @@ isa = PBXGroup; children = ( 01056190224BBE7F00E1557D /* FormValidationProtocol.swift */, - 01BDA2D622442F59001DACC9 /* MVMCoreUIFormMoleculesProtocol.h */, ); path = Protocols; sourceTree = ""; @@ -775,7 +772,6 @@ D29770F321F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsTableViewController.h in Headers */, D2C5001821F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.h in Headers */, D29770FD21F7C77400B2F0D0 /* MVMCoreUITextFieldView.h in Headers */, - 01BDA2D722442F59001DACC9 /* MVMCoreUIFormMoleculesProtocol.h in Headers */, D29DF17421E69E1F003B2FB9 /* MFCustomButton.h in Headers */, D29DF29721E7ADB8003B2FB9 /* MFScrollingViewController.h in Headers */, D29DF26F21E6AA0B003B2FB9 /* FLAnimatedImageView.h in Headers */, diff --git a/MVMCoreUI/Atoms/Buttons/PrimaryButton.m b/MVMCoreUI/Atoms/Buttons/PrimaryButton.m index a7c8ee4a..7600bcf0 100644 --- a/MVMCoreUI/Atoms/Buttons/PrimaryButton.m +++ b/MVMCoreUI/Atoms/Buttons/PrimaryButton.m @@ -760,14 +760,6 @@ #pragma mark - FormValidationProtocol -- (nullable FormValidator*) formValidatorModel { - return self.formValidator; -} - -- (void)setFormValidationModel:(nonnull FormValidator*) formValidatorModel { - self.formValidator = formValidatorModel; -} - - (void)enableField:(BOOL) enable { if (self.validationRequired == NO) { diff --git a/MVMCoreUI/Atoms/TextFields/MFTextField.m b/MVMCoreUI/Atoms/TextFields/MFTextField.m index 49e26395..92ddfe0b 100644 --- a/MVMCoreUI/Atoms/TextFields/MFTextField.m +++ b/MVMCoreUI/Atoms/TextFields/MFTextField.m @@ -24,7 +24,6 @@ @interface MFTextField() -@property (strong, nonatomic) FormValidator* formValidator; @property (strong, nonatomic) UIColor *customPlaceHolderColor; @property (weak, nonatomic) IBOutlet NSLayoutConstraint *separatorHeightConstraint; @property (strong, nonatomic) UIBezierPath *borderPath; @@ -113,14 +112,13 @@ [FormValidator setupValidationWithMolecule:self delegate: (id)delegate]; [self setWithMap:json bothDelegates:delegate]; - self.mfTextFieldDelegate = self.formValidator; - self.uiTextFieldDelegate = self.formValidator; + FormValidator *formValidator = [FormValidator getFormValidatorForDelegate:(id)delegate]; + self.mfTextFieldDelegate = formValidator; + self.uiTextFieldDelegate = formValidator; [self setVerticalPadding:[MFStyler defaultHorizontalPaddingForApplicationWidth]]; } - - - (void) setVerticalPadding:(CGFloat) padding { self.textContainerLeftPin.constant = padding; self.errorLableLeftPin.constant = padding; @@ -562,14 +560,6 @@ #pragma mark - MVMCoreUIMoleculeViewProtocol -- (nullable FormValidator*) formValidatorModel { - return self.formValidator; -} - -- (void)setFormValidationModel:(nonnull FormValidator*) formValidatorModel { - self.formValidator = formValidatorModel; -} - - (BOOL) isValidField { return self.valid; } diff --git a/MVMCoreUI/Models/FormValidator.swift b/MVMCoreUI/Models/FormValidator.swift index 0304ca8d..1b546d69 100644 --- a/MVMCoreUI/Models/FormValidator.swift +++ b/MVMCoreUI/Models/FormValidator.swift @@ -18,20 +18,26 @@ import UIKit public func insertMolecule(_ molecule: UIView & FormValidationProtocol) { molecules.append(molecule) } + + public static func getFormValidatorFor(delegate: FormValidationProtocol) -> FormValidator? { + if let delegateFormValidatorModel = delegate.formValidatorModel, + let validator = delegateFormValidatorModel() { + return validator + } else { + return nil + } + } public static func setupValidation(molecule: UIView & FormValidationProtocol, delegate: FormValidationProtocol?) { if let delegateFormValidatorModel = delegate?.formValidatorModel, - let setFormValidationModel = molecule.setFormValidationModel, let validator = delegateFormValidatorModel() { - + validator.delegate = delegate validator.insertMolecule(molecule) - setFormValidationModel(validator) } } public func enableByValidation() { - var valid = true for molecule in molecules { if let isValidField = molecule.isValidField, @@ -39,7 +45,6 @@ import UIKit valid = false } } - let enableField = valid && (extraValidationBlock?() ?? true) shouldEnable(enableField) } diff --git a/MVMCoreUI/Models/MVMCoreUIFormValidator.h b/MVMCoreUI/Models/MVMCoreUIFormValidator.h deleted file mode 100644 index 151fb17f..00000000 --- a/MVMCoreUI/Models/MVMCoreUIFormValidator.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// MVMCoreUIFormValidator.h -// MVMCoreUI -// -// Created by Suresh, Kamlesh on 3/20/19. -// Copyright © 2019 Verizon Wireless. All rights reserved. -// - -#import -#import -NS_ASSUME_NONNULL_BEGIN - -@class MFTextField; - -@interface MVMCoreUIFormValidator : NSObject - -@property (weak, nonatomic) NSObject * delegate; -@property (strong, nonatomic) NSMutableArray *>* molecules; - -@property (nullable, copy, nonatomic) BOOL(^extraValidationBlock)(void); - -- (void)setEnabledByValidity; -- (void)insertMolecule:(nonnull UIView *) molecule; - -+ (void)setupValidationFor:(nonnull UIView *) molecule delegate:(nonnull NSObject *)delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/MVMCoreUI/Models/MVMCoreUIFormValidator.m b/MVMCoreUI/Models/MVMCoreUIFormValidator.m deleted file mode 100644 index 55e919ce..00000000 --- a/MVMCoreUI/Models/MVMCoreUIFormValidator.m +++ /dev/null @@ -1,75 +0,0 @@ -// -// MVMCoreUIFormValidator.m -// MVMCoreUI -// -// Created by Suresh, Kamlesh on 3/20/19. -// Copyright © 2019 Verizon Wireless. All rights reserved. -// - -#import "MVMCoreUIFormValidator.h" -#import "MFTextField.h" -@import MVMCore.MVMCoreDispatchUtility; - - -@implementation MVMCoreUIFormValidator - - -- (void)insertMolecule:(nonnull UIView *) molecule { - if (self.molecules == nil) { - self.molecules = [NSMutableArray array]; - } - if (molecule) { - [self.molecules addObject:molecule]; - } -} - -+ (void)setupValidationFor:(nonnull UIView *) molecule delegate:(nonnull NSObject *)delegate { - if ([delegate conformsToProtocol:@protocol(FormValidationProtocol)] - && [delegate respondsToSelector:@selector(formValidatorModel)] - && [molecule conformsToProtocol:@protocol(FormValidationProtocol)] - && [molecule respondsToSelector:@selector(setFormValidationModel:)]) { - - MVMCoreUIFormValidator *validator = [delegate formValidatorModel]; - validator.delegate = delegate; - [validator insertMolecule:molecule]; - [molecule setFormValidationModel:validator]; - } -} - - -- (void)setEnabledByValidity { - __block BOOL valid = YES; - [self.molecules enumerateObjectsUsingBlock:^(UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj conformsToProtocol:@protocol(MVMCoreUIFormValidationProtocol)] - && [obj respondsToSelector:@selector(isValidField)] - && [obj isValidField] == NO) { - valid = NO; - *stop = YES; - } - }]; - BOOL shouldEnable = valid && (self.extraValidationBlock ? self.extraValidationBlock() : YES); - [self shouldEnable:shouldEnable]; -} - -- (void)shouldEnable:(BOOL) enable { - [self.molecules enumerateObjectsUsingBlock:^(UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj conformsToProtocol:@protocol(FormValidationProtocol)] - && [obj respondsToSelector:@selector(enableField:)]) { - - [MVMCoreDispatchUtility performBlockOnMainThread:^{ - [obj enableField:enable]; - }]; - } - }]; -} - -- (void)entryIsValid:(nullable MFTextField *)textfield { - [self setEnabledByValidity]; -} - -- (void)entryIsInvalid:(nullable MFTextField *)textfield { - [self shouldEnable:false]; -} - - -@end diff --git a/MVMCoreUI/Molecules/MFTextFieldListView.swift b/MVMCoreUI/Molecules/MFTextFieldListView.swift index bb267d29..6d24e19a 100644 --- a/MVMCoreUI/Molecules/MFTextFieldListView.swift +++ b/MVMCoreUI/Molecules/MFTextFieldListView.swift @@ -24,18 +24,6 @@ public class MFTextFieldListView: ViewConstrainingView { self.primaryButton = primaryButton super.init(frame: .zero) } - - - public override func setWithJSON(_ json: [AnyHashable : Any]?, delegate: NSObject?, additionalData: [AnyHashable : Any]?) { - self.textFieldMapList = json?.arrayForKey("textFields") as? [[String : Any]] - - if let threeLayerVC = delegate as? ThreeLayerViewController { - self.parentViewContoller = threeLayerVC - self.primaryButton = (threeLayerVC.bottomView as? StandardFooterView)?.twoButtonView.primaryButton - } - setupView() - } - public required init?(coder decoder: NSCoder) { super.init(coder: decoder) diff --git a/MVMCoreUI/Protocols/FormValidationProtocol.swift b/MVMCoreUI/Protocols/FormValidationProtocol.swift index 71d07467..bfdbb0fd 100644 --- a/MVMCoreUI/Protocols/FormValidationProtocol.swift +++ b/MVMCoreUI/Protocols/FormValidationProtocol.swift @@ -10,9 +10,7 @@ import Foundation @objc public protocol FormValidationProtocol: NSObjectProtocol { - @objc func formValidatorModel() -> FormValidator? - - @objc optional func setFormValidationModel(_ formValidatorModel:FormValidator) + @objc optional func formValidatorModel() -> FormValidator? @objc optional func isValidField() -> Bool @objc optional func enableField(_ enable: Bool) diff --git a/MVMCoreUI/Protocols/MVMCoreUIFormMoleculesProtocol.h b/MVMCoreUI/Protocols/MVMCoreUIFormMoleculesProtocol.h deleted file mode 100644 index 3c76f16f..00000000 --- a/MVMCoreUI/Protocols/MVMCoreUIFormMoleculesProtocol.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// MVMCoreUIFormMoleculesProtocol.h -// MVMCoreUI -// -// Created by Suresh, Kamlesh on 3/21/19. -// Copyright © 2019 Verizon Wireless. All rights reserved. -// - -#import - - -@protocol MVMCoreUIFormMoleculesProtocol -//- (BOOL)isValidField; -//- (void)enableField:(BOOL) enable; -// -//- (NSString *)formFieldName; -//- (NSString *)formFieldValue; -@end diff --git a/MVMCoreUI/Protocols/MVMCoreUIFormValidationProtocol.h b/MVMCoreUI/Protocols/MVMCoreUIFormValidationProtocol.h deleted file mode 100644 index 3b55bd3c..00000000 --- a/MVMCoreUI/Protocols/MVMCoreUIFormValidationProtocol.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// MVMCoreUIFormValidationProtocol.h -// MVMCoreUI -// -// Created by Suresh, Kamlesh on 3/20/19. -// Copyright © 2019 Verizon Wireless. All rights reserved. -// - -#import -//#import -//#import "MVMCoreUI-Swift.h" - -@class MVMCoreUIFormValidator; - -@protocol MVMCoreUIFormValidationProtocol - -// Returns the form validator model -- (nullable MVMCoreUIFormValidator *) formValidatorModel; - -@optional -- (void)setFormValidationModel:(nonnull MVMCoreUIFormValidator *) formValidatorModel; - -- (BOOL)isValidField; -- (void)enableField:(BOOL) enable; - -- (nullable NSString *)formFieldName; -- (nullable id)formFieldValue; - -@end