Skip to content

Commit 9436f73

Browse files
authored
Merge pull request #8 from yangyubo/main
Allow pass in a custom TransactionMergerProtocol instance
2 parents 6976209 + a6c81df commit 9436f73

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

Sources/PersistentHistoryTrackingKit/PersistentHistoryTrackingKit.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public final class PersistentHistoryTrackingKit {
5858
let fetcher: Fetcher
5959

6060
/// 合并transaction到指定的托管对象上下文中(contexts)
61-
let merger: Merger
61+
let merger: TransactionMergerProtocol
6262

6363
/// 删除transaction中重复数据
6464
let deduplicator: TransactionDeduplicatorProtocol?
@@ -193,6 +193,7 @@ public final class PersistentHistoryTrackingKit {
193193

194194
init(logLevel: Int,
195195
strategy: TransactionCleanStrategy,
196+
merger: TransactionMergerProtocol,
196197
deduplicator: TransactionDeduplicatorProtocol?,
197198
currentAuthor: String,
198199
allAuthors: [String],
@@ -243,7 +244,7 @@ public final class PersistentHistoryTrackingKit {
243244
includingCloudKitMirroring: includingCloudKitMirroring
244245
)
245246

246-
self.merger = Merger()
247+
self.merger = merger
247248
self.deduplicator = deduplicator
248249
self.cleaner = Cleaner(backgroundContext: backgroundContext, authors: allAuthors)
249250
self.timestampManager = TransactionTimestampManager(userDefaults: userDefaults, maximumDuration: maximumDuration, uniqueString: uniqueString)
@@ -320,6 +321,7 @@ public extension PersistentHistoryTrackingKit {
320321
batchAuthors: [String] = [],
321322
userDefaults: UserDefaults,
322323
cleanStrategy: TransactionCleanStrategy = .byNotification(times: 1),
324+
merger: TransactionMergerProtocol? = nil,
323325
deduplicator: TransactionDeduplicatorProtocol? = nil,
324326
maximumDuration: TimeInterval = 60 * 60 * 24 * 7,
325327
uniqueString: String = "PersistentHistoryTrackingKit.lastToken.",
@@ -330,6 +332,7 @@ public extension PersistentHistoryTrackingKit {
330332
let logger = logger ?? DefaultLogger()
331333
self.init(logLevel: logLevel,
332334
strategy: cleanStrategy,
335+
merger: merger ?? Merger(),
333336
deduplicator: deduplicator,
334337
currentAuthor: currentAuthor,
335338
allAuthors: allAuthors,
@@ -353,6 +356,7 @@ public extension PersistentHistoryTrackingKit {
353356
batchAuthors: [String] = [],
354357
userDefaults: UserDefaults,
355358
cleanStrategy: TransactionCleanStrategy = .byNotification(times: 1),
359+
merger: TransactionMergerProtocol? = nil,
356360
deduplicator: TransactionDeduplicatorProtocol? = nil,
357361
maximumDuration: TimeInterval = 60 * 60 * 24 * 7,
358362
uniqueString: String = "PersistentHistoryTrackingKit.lastToken.",
@@ -364,6 +368,7 @@ public extension PersistentHistoryTrackingKit {
364368
let logger = logger ?? DefaultLogger()
365369
self.init(logLevel: logLevel,
366370
strategy: cleanStrategy,
371+
merger: merger ?? Merger(),
367372
deduplicator: deduplicator,
368373
currentAuthor: currentAuthor,
369374
allAuthors: allAuthors,

Sources/PersistentHistoryTrackingKit/Protocol/MergerProtocol.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import CoreData
1414
import Foundation
1515

16-
protocol TransactionMergerProtocol {
16+
public protocol TransactionMergerProtocol {
1717
/// 将 transaction 合并到指定的托管对象上下文。可以多个上下文,之间用 ,分隔
1818
func callAsFunction(merge transactions: [NSPersistentHistoryTransaction], into contexts: [NSManagedObjectContext])
1919
}

0 commit comments

Comments
 (0)