|
|
|
@ -9,6 +9,30 @@ public protocol BlockListCacheDelegate: class {
|
|
|
|
|
func blockListCacheDidUpdate(_ blocklistCache: BlockListCache)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// A performant cache for which contacts/groups are blocked.
|
|
|
|
|
///
|
|
|
|
|
/// The source of truth for which contacts and groups are blocked is the `blockingManager`, but because
|
|
|
|
|
/// those accessors are made to be thread safe, they can be slow in tight loops, e.g. when rendering table
|
|
|
|
|
/// view cells.
|
|
|
|
|
///
|
|
|
|
|
/// Typically you'll want to create a Cache, update it to the latest state while simultaneously being informed
|
|
|
|
|
/// of any future changes to block list state.
|
|
|
|
|
///
|
|
|
|
|
/// class SomeViewController: BlockListCacheDelegate {
|
|
|
|
|
/// let blockListCache = BlockListCache()
|
|
|
|
|
/// func viewDidLoad() {
|
|
|
|
|
/// super.viewDidLoad()
|
|
|
|
|
/// blockListCache.startObservingAndSyncState(delegate: self)
|
|
|
|
|
/// self.updateAnyViewsWhichDepondOnBlockListCache()
|
|
|
|
|
/// }
|
|
|
|
|
///
|
|
|
|
|
/// func blockListCacheDidUpdate(_ blocklistCache: BlockListCache) {
|
|
|
|
|
/// self.updateAnyViewsWhichDepondOnBlockListCache()
|
|
|
|
|
/// }
|
|
|
|
|
///
|
|
|
|
|
/// ...
|
|
|
|
|
/// }
|
|
|
|
|
///
|
|
|
|
|
@objc(OWSBlockListCache)
|
|
|
|
|
public class BlockListCache: NSObject {
|
|
|
|
|
|
|
|
|
|