From 07351c1a22712484435cbdc295928334b4f78371 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 12 Aug 2024 08:28:44 -0500 Subject: [PATCH 1/2] ensure viewModel?. is used outside of the viewModelDidUpdate method Signed-off-by: Matt Bruce --- .../Item Dropdown/ItemDropdownEntryField.swift | 6 +++--- .../Atoms/FormFields/TextFields/InputEntryField.swift | 10 +++++----- .../FormFields/TextFields/TextViewEntryField.swift | 8 ++++---- MVMCoreUI/Atomic/Atoms/Selectors/Checkbox.swift | 2 +- MVMCoreUI/Atomic/Atoms/Views/CheckboxLabel.swift | 2 +- MVMCoreUI/Atomic/Atoms/Views/Label/FormLabel.swift | 2 +- MVMCoreUI/Atomic/Atoms/Views/Line.swift | 4 ++-- .../Molecules/HorizontalCombinationViews/Tabs.swift | 2 +- 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/ItemDropdownEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/ItemDropdownEntryField.swift index dee7916b..7025d18e 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/ItemDropdownEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/ItemDropdownEntryField.swift @@ -110,7 +110,7 @@ open class ItemDropdownEntryField: VDS.DropdownSelect, VDSMoleculeViewProtocol, publisher(for: .valueChanged) .sink { [weak self] control in - guard let self, let selectedItem else { return } + guard let self, let selectedItem, let viewModel else { return } viewModel.selectedIndex = control.selectId observeDropdownSelection?(selectedItem.text) _ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate) @@ -130,7 +130,7 @@ open class ItemDropdownEntryField: VDS.DropdownSelect, VDSMoleculeViewProtocol, guard let self else { return } isEditting = false _ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate) - if let valid = viewModel.isValid { + if let viewModel, let valid = viewModel.isValid { updateValidation(valid) } performDropdownAction() @@ -207,7 +207,7 @@ open class ItemDropdownEntryField: VDS.DropdownSelect, VDSMoleculeViewProtocol, if setInitialValueInTextField { let pickerIndex = optionsPicker.selectedRow(inComponent: 0) - viewModel.selectedIndex = pickerIndex + viewModel?.selectedIndex = pickerIndex selectId = pickerIndex } } diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/InputEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/InputEntryField.swift index 51cbd26c..fb99a10a 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/InputEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/InputEntryField.swift @@ -33,7 +33,7 @@ import VDS private var isEditting: Bool = false { didSet { - viewModel.selected = isEditting + viewModel?.selected = isEditting } } @@ -47,7 +47,7 @@ import VDS open var validateWhenDoneEditing: Bool = true open var shouldMaskWhileRecording: Bool { - return viewModel.shouldMaskRecordedView ?? false + return viewModel?.shouldMaskRecordedView ?? false } //-------------------------------------------------- // MARK: - Computed Properties @@ -99,7 +99,7 @@ import VDS publisher(for: .valueChanged) .sink { [weak self] control in - guard let self else { return } + guard let self, let viewModel else { return } _ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate) if (viewModel.type == .email) { // remove spaces (either user entered Or auto-correct suggestion) for the email field @@ -112,7 +112,7 @@ import VDS .sink { [weak self] textView in guard let self else { return } isEditting = true - if viewModel.clearTextOnTap { + if let viewModel, viewModel.clearTextOnTap { text = "" } }.store(in: &subscribers) @@ -122,7 +122,7 @@ import VDS .sink { [weak self] textView in guard let self else { return } isEditting = false - if validateWhenDoneEditing, let valid = viewModel.isValid { + if let viewModel, validateWhenDoneEditing, let valid = viewModel.isValid { updateValidation(valid) } regexTextFieldOutputIfAvailable() diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextViewEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextViewEntryField.swift index 1cacbeae..bce7eb7b 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextViewEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextViewEntryField.swift @@ -29,7 +29,7 @@ open class TextViewEntryField: VDS.TextArea, VDSMoleculeViewProtocol, ObservingT private var isEditting: Bool = false { didSet { - viewModel.selected = isEditting + viewModel?.selected = isEditting } } @@ -37,7 +37,7 @@ open class TextViewEntryField: VDS.TextArea, VDSMoleculeViewProtocol, ObservingT // MARK: - Computed Properties //-------------------------------------------------- open var shouldMaskWhileRecording: Bool { - return viewModel.shouldMaskRecordedView ?? false + return viewModel?.shouldMaskRecordedView ?? false } /// Placeholder access for the textView. @@ -91,7 +91,7 @@ open class TextViewEntryField: VDS.TextArea, VDSMoleculeViewProtocol, ObservingT publisher(for: .valueChanged) .sink { [weak self] control in - guard let self else { return } + guard let self, let viewModel else { return } _ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate) }.store(in: &subscribers) @@ -108,7 +108,7 @@ open class TextViewEntryField: VDS.TextArea, VDSMoleculeViewProtocol, ObservingT .sink { [weak self] textView in guard let self else { return } isEditting = false - if let valid = viewModel.isValid { + if let viewModel, let valid = viewModel.isValid { updateValidation(valid) } diff --git a/MVMCoreUI/Atomic/Atoms/Selectors/Checkbox.swift b/MVMCoreUI/Atomic/Atoms/Selectors/Checkbox.swift index 64224f04..3e6e2a84 100644 --- a/MVMCoreUI/Atomic/Atoms/Selectors/Checkbox.swift +++ b/MVMCoreUI/Atomic/Atoms/Selectors/Checkbox.swift @@ -142,7 +142,7 @@ import VDS viewModel.updateUI = { MVMCoreDispatchUtility.performBlock(onMainThread: { [weak self] in guard let self = self else { return } - let isValid = viewModel.isValid ?? true + //let isValid = viewModel.isValid ?? true //TODO: Fix issue with default state //showError = !isValid isEnabled = viewModel.enabled diff --git a/MVMCoreUI/Atomic/Atoms/Views/CheckboxLabel.swift b/MVMCoreUI/Atomic/Atoms/Views/CheckboxLabel.swift index 3e02b467..b4825ee6 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/CheckboxLabel.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/CheckboxLabel.swift @@ -74,7 +74,7 @@ import VDS viewModel.checkbox.updateUI = { MVMCoreDispatchUtility.performBlock(onMainThread: { [weak self] in guard let self = self else { return } - let isValid = viewModel.checkbox.isValid ?? true + //let isValid = viewModel.checkbox.isValid ?? true //TODO: Fix issue with default state //showError = !isValid errorText = viewModel.checkbox.errorMessage diff --git a/MVMCoreUI/Atomic/Atoms/Views/Label/FormLabel.swift b/MVMCoreUI/Atomic/Atoms/Views/Label/FormLabel.swift index a7755928..d9c8b09b 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/Label/FormLabel.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/Label/FormLabel.swift @@ -16,7 +16,7 @@ public class FormLabel: Label { //public properties public override var isEnabled: Bool { didSet{ - self.formModel.enabled = isEnabled + self.formModel?.enabled = isEnabled self.set(with: isRequired ? formModel.model : formModel.requiredModel, delegateObject, additionalData) } } diff --git a/MVMCoreUI/Atomic/Atoms/Views/Line.swift b/MVMCoreUI/Atomic/Atoms/Views/Line.swift index ba0af74f..20be7af0 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/Line.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/Line.swift @@ -66,7 +66,7 @@ import VDS } open func setStyle(_ style: LineModel.Style) { - viewModel.type = style + viewModel?.type = style update(viewModel: viewModel) } @@ -85,7 +85,7 @@ import VDS } open override func draw(_ rect: CGRect) { - guard viewModel.type != .none else { return } + guard let viewModel, viewModel.type != .none else { return } super.draw(rect) } diff --git a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/Tabs.swift b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/Tabs.swift index d85412aa..9221eb44 100644 --- a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/Tabs.swift +++ b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/Tabs.swift @@ -30,7 +30,7 @@ import VDS if let delegate { onTabDidSelect = { [weak self] index in guard let self else { return } - viewModel.selectedIndex = index + viewModel?.selectedIndex = index delegate.didSelectItem(.init(row: index, section: 0), tabs: self) } From 441525a610d57f4228776e0b73969bc3418468ba Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 12 Aug 2024 08:30:53 -0500 Subject: [PATCH 2/2] ensure formModel exists Signed-off-by: Matt Bruce --- MVMCoreUI/Atomic/Atoms/Views/Label/FormLabel.swift | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/Label/FormLabel.swift b/MVMCoreUI/Atomic/Atoms/Views/Label/FormLabel.swift index d9c8b09b..986dc7a9 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/Label/FormLabel.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/Label/FormLabel.swift @@ -16,13 +16,15 @@ public class FormLabel: Label { //public properties public override var isEnabled: Bool { didSet{ - self.formModel?.enabled = isEnabled + guard let formModel else { return } + formModel.enabled = isEnabled self.set(with: isRequired ? formModel.model : formModel.requiredModel, delegateObject, additionalData) } } public var isRequired: Bool = true { didSet{ + guard let formModel else { return } self.set(with: isRequired ? formModel.model : formModel.requiredModel, delegateObject, additionalData) } } @@ -50,6 +52,7 @@ public class FormLabel: Label { /// Text change that will update both enabledModel and disabledModel text values /// - Parameter text: text you want to see public func set(text: String?){ - self.formModel.set(text: text ?? "") + guard let formModel else { return } + formModel.set(text: text ?? "") } }