Rewrite and move BatchUpdate.swift.

This commit is contained in:
Brent Simmons
2017-10-05 20:34:29 -07:00
parent b53626fc84
commit c258a9da5c
10 changed files with 84 additions and 91 deletions

View File

@@ -1,76 +0,0 @@
//
// BatchUpdates.swift
// DataModel
//
// Created by Brent Simmons on 9/12/16.
// Copyright © 2016 Ranchero Software, LLC. All rights reserved.
//
import Foundation
private final class BatchUpdatesTracker {
private var batchUpdatesCount = 0
var isPerformingBatchUpdates: Bool {
get {
return batchUpdatesCount > 0
}
}
func incrementBatchUpdatesCount() {
batchUpdatesCount = batchUpdatesCount + 1
}
func decrementBatchUpdatesCount() {
batchUpdatesCount = batchUpdatesCount - 1
if batchUpdatesCount < 1 {
if batchUpdatesCount < 0 {
assertionFailure("Batch updates count should never be below 0.")
batchUpdatesCount = 0
}
batchUpdatesCount = 0
postDataModelDidPerformBatchUpdates()
}
}
func postDataModelDidPerformBatchUpdates() {
NotificationCenter.default.post(name: .DataModelDidPerformBatchUpdates, object: nil)
}
}
fileprivate let batchUpdatesTracker = BatchUpdatesTracker()
public func dataModelIsPerformingBatchUpdates() -> Bool {
return batchUpdatesTracker.isPerformingBatchUpdates
}
public typealias BatchUpdatesBlock = () -> Void
public func performDataModelBatchUpdates(_ batchUpdatesBlock: BatchUpdatesBlock) {
startDataModelBatchUpdates()
batchUpdatesBlock()
endDataModelBatchUpdates()
}
private func startDataModelBatchUpdates() {
batchUpdatesTracker.incrementBatchUpdatesCount()
}
private func endDataModelBatchUpdates() {
batchUpdatesTracker.decrementBatchUpdatesCount()
}

View File

@@ -19,7 +19,6 @@
844BEE811F0AB4D0004AB7CD /* Author.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844BEE801F0AB4D0004AB7CD /* Author.swift */; };
844BEE831F0AB4D6004AB7CD /* Attachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844BEE821F0AB4D6004AB7CD /* Attachment.swift */; };
844BEE851F0AB4DB004AB7CD /* ArticleStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844BEE841F0AB4DB004AB7CD /* ArticleStatus.swift */; };
844BEE871F0AB4E3004AB7CD /* BatchUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844BEE861F0AB4E3004AB7CD /* BatchUpdates.swift */; };
844BEE891F0AB4E7004AB7CD /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844BEE881F0AB4E7004AB7CD /* Notifications.swift */; };
84C490F41F705D5F003131D2 /* RSWeb.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84C490F51F705D5F003131D2 /* RSWeb.framework */; };
/* End PBXBuildFile section */
@@ -70,7 +69,6 @@
844BEE801F0AB4D0004AB7CD /* Author.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Author.swift; sourceTree = "<group>"; };
844BEE821F0AB4D6004AB7CD /* Attachment.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Attachment.swift; sourceTree = "<group>"; };
844BEE841F0AB4DB004AB7CD /* ArticleStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ArticleStatus.swift; sourceTree = "<group>"; };
844BEE861F0AB4E3004AB7CD /* BatchUpdates.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdates.swift; sourceTree = "<group>"; };
844BEE881F0AB4E7004AB7CD /* Notifications.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Notifications.swift; sourceTree = "<group>"; };
844BEE9C1F0AB512004AB7CD /* RSCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSCore.xcodeproj; path = ../RSCore/RSCore.xcodeproj; sourceTree = "<group>"; };
84C490F51F705D5F003131D2 /* RSWeb.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = RSWeb.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -106,7 +104,6 @@
844BEE821F0AB4D6004AB7CD /* Attachment.swift */,
844BEE841F0AB4DB004AB7CD /* ArticleStatus.swift */,
840405C91F1A8E4300DF0296 /* DatabaseID.swift */,
844BEE861F0AB4E3004AB7CD /* BatchUpdates.swift */,
844BEE881F0AB4E7004AB7CD /* Notifications.swift */,
8419741B1F6DD613006346C4 /* UnreadCountProvider.swift */,
8419741F1F6DD672006346C4 /* DisplayNameProvider.swift */,
@@ -304,7 +301,6 @@
844BEE831F0AB4D6004AB7CD /* Attachment.swift in Sources */,
8419741C1F6DD613006346C4 /* UnreadCountProvider.swift in Sources */,
841974201F6DD672006346C4 /* DisplayNameProvider.swift in Sources */,
844BEE871F0AB4E3004AB7CD /* BatchUpdates.swift in Sources */,
844BEE811F0AB4D0004AB7CD /* Author.swift in Sources */,
840405CA1F1A8E4300DF0296 /* DatabaseID.swift in Sources */,
844BEE851F0AB4DB004AB7CD /* ArticleStatus.swift in Sources */,