From 904cdf3798d8b83c4f0750e43295efe22d1136da Mon Sep 17 00:00:00 2001 From: Sumanth Nadigadda Date: Wed, 22 Feb 2023 20:24:18 +0530 Subject: [PATCH] Introducing shouldFinishProcessingLoad call to behavior to check if we can continue to load the viewcontroller --- MVMCoreUI/BaseControllers/ViewController.swift | 9 +++++++++ .../Protocols/PageBehaviorHandlerProtocol.swift | 4 ++++ MVMCoreUI/Behaviors/Protocols/PageBehaviorProtocol.swift | 2 ++ 3 files changed, 15 insertions(+) diff --git a/MVMCoreUI/BaseControllers/ViewController.swift b/MVMCoreUI/BaseControllers/ViewController.swift index c6c64f3a..cab9d9ce 100644 --- a/MVMCoreUI/BaseControllers/ViewController.swift +++ b/MVMCoreUI/BaseControllers/ViewController.swift @@ -146,6 +146,15 @@ import MVMCore } } + ///Check with behavior if it can continue + let conditionSatisfied = conditionSatisfyingBehaviours { (behavior: PageMoleculeTransformationBehavior) in + return behavior.shouldFinishProcessingLoad(loadObject) + } + + if conditionSatisfied == false { + return conditionSatisfied + } + return true } diff --git a/MVMCoreUI/Behaviors/Protocols/PageBehaviorHandlerProtocol.swift b/MVMCoreUI/Behaviors/Protocols/PageBehaviorHandlerProtocol.swift index 971a052b..dcd8a2eb 100644 --- a/MVMCoreUI/Behaviors/Protocols/PageBehaviorHandlerProtocol.swift +++ b/MVMCoreUI/Behaviors/Protocols/PageBehaviorHandlerProtocol.swift @@ -44,4 +44,8 @@ public extension PageBehaviorHandlerProtocol { func executeBehaviors(_ behaviorBlock: (_ behavior: T) -> Void) { behaviors?.compactMap { $0 as? T }.forEach { behaviorBlock($0) } } + + func conditionSatisfyingBehaviours(_ behaviourBlock: (_ behavior: T) -> Bool) -> Bool { + return behaviors?.compactMap({$0 as? T}).allSatisfy({ return behaviourBlock($0) }) ?? false + } } diff --git a/MVMCoreUI/Behaviors/Protocols/PageBehaviorProtocol.swift b/MVMCoreUI/Behaviors/Protocols/PageBehaviorProtocol.swift index d5f65323..c8b05055 100644 --- a/MVMCoreUI/Behaviors/Protocols/PageBehaviorProtocol.swift +++ b/MVMCoreUI/Behaviors/Protocols/PageBehaviorProtocol.swift @@ -32,6 +32,7 @@ public protocol PageMoleculeTransformationBehavior: PageBehaviorProtocol { func didSetupMolecule(view: MoleculeViewProtocol, withModel: MoleculeModelProtocol) func willSetupNavigationBar(with model: NavigationItemModelProtocol, updating view: UINavigationBar) func didSetupNavigationBar(view: UINavigationBar, with model: NavigationItemModelProtocol) + func shouldFinishProcessingLoad(_ loadObject: MVMCoreLoadObject) -> Bool } public extension PageMoleculeTransformationBehavior { @@ -41,6 +42,7 @@ public extension PageMoleculeTransformationBehavior { func didSetupMolecule(view: MoleculeViewProtocol, withModel: MoleculeModelProtocol) {} func willSetupNavigationBar(with model: NavigationItemModelProtocol, updating view: UINavigationBar) {} func didSetupNavigationBar(view: UINavigationBar, with model: NavigationItemModelProtocol) {} + func shouldFinishProcessingLoad(_ loadObject: MVMCoreLoadObject) -> Bool { return true } } public protocol PageVisibilityBehavior: PageBehaviorProtocol {