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 immediate
|
||||||
case delayed
|
case delayed
|
||||||
case alwaysImmediate
|
case alwaysImmediate
|
||||||
|
case paused
|
||||||
}
|
}
|
||||||
|
|
||||||
public protocol Handlerable: AnyObject, Initable, Disabling, Surfaceable {
|
public protocol Handlerable: AnyObject, Initable, Disabling, Surfaceable {
|
||||||
@ -37,6 +38,8 @@ extension Handlerable {
|
|||||||
subject.send()
|
subject.send()
|
||||||
case .immediate, .alwaysImmediate:
|
case .immediate, .alwaysImmediate:
|
||||||
updateView()
|
updateView()
|
||||||
|
case .paused:
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,3 +58,15 @@ extension Handlerable where Self: UIControl {
|
|||||||
}).store(in: &subscribers)
|
}).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