diff --git a/VDS/Classes/Control.swift b/VDS/Classes/Control.swift index 6e871f4f..e37d0655 100644 --- a/VDS/Classes/Control.swift +++ b/VDS/Classes/Control.swift @@ -62,15 +62,7 @@ open class Control: UIControl, ModelHandlerable, ViewProto public func initialSetup() { if !initialSetupPerformed { initialSetupPerformed = true - //setup viewUpdate - modelPublisher.filter { viewModel in - return self.shouldUpdateView(viewModel: viewModel) - - }.debounce(for: .seconds(Constants.ModelStateDebounce), scheduler: RunLoop.main).sink { [weak self] viewModel in - guard let self = self else { return } - self.updateView(viewModel: viewModel) - - }.store(in: &subscribers) + setupUpdateView() setup() } } diff --git a/VDS/Classes/View.swift b/VDS/Classes/View.swift index 06c8cec8..1c6354d1 100644 --- a/VDS/Classes/View.swift +++ b/VDS/Classes/View.swift @@ -62,15 +62,7 @@ open class View: UIView, ModelHandlerable, ViewProtocol, R public func initialSetup() { if !initialSetupPerformed { initialSetupPerformed = true - //setup viewUpdate - modelPublisher.filter { viewModel in - return self.shouldUpdateView(viewModel: viewModel) - - }.debounce(for: .seconds(Constants.ModelStateDebounce), scheduler: RunLoop.main).sink { [weak self] viewModel in - guard let self = self else { return } - self.updateView(viewModel: viewModel) - - }.store(in: &subscribers) + setupUpdateView() setup() } } diff --git a/VDS/Components/Label/Label.swift b/VDS/Components/Label/Label.swift index 347a94ee..078b5d3e 100644 --- a/VDS/Components/Label/Label.swift +++ b/VDS/Components/Label/Label.swift @@ -95,17 +95,7 @@ open class LabelBase: UILabel, ModelHandlerable, ViewProt translatesAutoresizingMaskIntoConstraints = false accessibilityCustomActions = [] accessibilityTraits = .staticText - - //setup viewUpdate - modelPublisher.filter { viewModel in - return self.shouldUpdateView(viewModel: viewModel) - - }.debounce(for: .seconds(Constants.ModelStateDebounce), scheduler: RunLoop.main).sink { [weak self] viewModel in - guard let self = self else { return } - self.updateView(viewModel: viewModel) - - }.store(in: &subscribers) - + setupUpdateView() setup() } diff --git a/VDS/Protocols/ModelHandlerable.swift b/VDS/Protocols/ModelHandlerable.swift index 9202e7f3..24d0c543 100644 --- a/VDS/Protocols/ModelHandlerable.swift +++ b/VDS/Protocols/ModelHandlerable.swift @@ -29,4 +29,16 @@ extension ModelHandlerable { self.model = model } } + + public func setupUpdateView() { + modelPublisher.filter { [weak self] viewModel in + guard let self else { return false} + return self.shouldUpdateView(viewModel: viewModel) + + }.debounce(for: .seconds(Constants.ModelStateDebounce), scheduler: RunLoop.main).sink { [weak self] viewModel in + guard let self else { return } + self.updateView(viewModel: viewModel) + + }.store(in: &subscribers) + } }