From 2e0d044c15c5bf658a07c50474e0ff5a0b30c4c2 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 8 Sep 2022 15:07:56 -0500 Subject: [PATCH] updated code Signed-off-by: Matt Bruce --- VDS/Components/RadioBox/RadioBoxGroup.swift | 3 ++- VDS/Protocols/SelectorGroupModelHandlerable.swift | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/VDS/Components/RadioBox/RadioBoxGroup.swift b/VDS/Components/RadioBox/RadioBoxGroup.swift index 82a385e0..e8dabe18 100644 --- a/VDS/Components/RadioBox/RadioBoxGroup.swift +++ b/VDS/Components/RadioBox/RadioBoxGroup.swift @@ -124,7 +124,8 @@ public class RadioBoxGroup: Control, SelectorGroupSel } open override func shouldUpdateView(viewModel: ModelType) -> Bool { - let update = viewModel.selectors.count != model.selectors.count + let update = viewModel.selectedModel?.inputId != model.selectedModel?.inputId + || viewModel.selectors.count != model.selectors.count || viewModel.hasError != model.hasError || viewModel.surface != model.surface || viewModel.disabled != model.disabled diff --git a/VDS/Protocols/SelectorGroupModelHandlerable.swift b/VDS/Protocols/SelectorGroupModelHandlerable.swift index 23a790f1..a7f5a583 100644 --- a/VDS/Protocols/SelectorGroupModelHandlerable.swift +++ b/VDS/Protocols/SelectorGroupModelHandlerable.swift @@ -89,6 +89,15 @@ extension SelectorGroupSelectedModelHandlerable { //create view let newSelectorView = ModelHandlerType(with: selector) + //add model update to the subscribers + newSelectorView.handlerPublisher() + .sink { [weak self] model in + if let cached = self?.getCachedSelector(viewModel: model), newSelectorView.shouldUpdateView(viewModel: cached) { + self?.replace(viewModel: model) + } + } + .store(in: &subscribers) + //add the selectedPublisher for the change newSelectorView .publisher(for: .touchUpInside) @@ -96,7 +105,6 @@ extension SelectorGroupSelectedModelHandlerable { self?.didSelect(control) } .store(in: &subscribers) - return newSelectorView