added paused update
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
df1e8ee2df
commit
4fd167cfa3
@ -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.updateStrategy = oldStrategy
|
||||
copy.updateView()
|
||||
return copy
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user