added paused update

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2023-07-19 16:03:06 -05:00
parent df1e8ee2df
commit 4fd167cfa3

View File

@ -13,6 +13,7 @@ public enum HandlerableUpdateStrategy {
case immediate
case delayed
case alwaysImmediate
case paused
}
public protocol Handlerable: AnyObject, Initable, Disabling, Surfaceable {
@ -37,6 +38,8 @@ extension Handlerable {
subject.send()
case .immediate, .alwaysImmediate:
updateView()
case .paused:
break
}
}
@ -55,3 +58,15 @@ extension Handlerable where Self: UIControl {
}).store(in: &subscribers)
}
}
extension Handlerable {
@discardableResult func pausedUpdate(_ closure: (_ instance: inout Self) -> Void) -> Self {
var copy = self
let oldStrategy = copy.updateStrategy
copy.updateStrategy = .paused
closure(&copy)
copy.updateStrategy = oldStrategy
copy.updateView()
return copy
}
}