This commit is contained in:
John Estropia
2021-08-25 20:13:14 +09:00
parent d2f1656fdd
commit 45215c7a18
6 changed files with 26 additions and 24 deletions

View File

@@ -116,10 +116,10 @@ extension DiffableDataSource {
target.reload(
using: changeset,
animated: animatingDifferences,
setData: setSections
setData: setSections,
completion: completion
)
},
completion: completion
}
)
}
@@ -148,10 +148,10 @@ extension DiffableDataSource {
target.reload(
using: changeset,
animated: animatingDifferences,
setData: setSections
setData: setSections,
completion: completion
)
},
completion: completion
}
)
}

View File

@@ -207,9 +207,9 @@ extension DiffableDataSource {
self.base?.moveItem(at: indexPath, to: newIndexPath)
}
public func performBatchUpdates(updates: () -> Void, animated: Bool) {
public func performBatchUpdates(updates: () -> Void, animated: Bool, completion: @escaping () -> Void) {
self.base?.animator().performBatchUpdates(updates, completionHandler: nil)
self.base?.animator().performBatchUpdates(updates, completionHandler: { _ in completion() })
}
public func reloadData() {

View File

@@ -207,9 +207,9 @@ extension DiffableDataSource {
self.base?.moveItem(at: indexPath, to: newIndexPath)
}
public func performBatchUpdates(updates: () -> Void, animated: Bool) {
public func performBatchUpdates(updates: () -> Void, animated: Bool, completion: @escaping () -> Void) {
self.base?.performBatchUpdates(updates, completion: nil)
self.base?.performBatchUpdates(updates, completion: { _ in completion() })
}
public func reloadData() {

View File

@@ -241,13 +241,13 @@ extension DiffableDataSource {
self.base?.moveRow(at: indexPath, to: newIndexPath)
}
public func performBatchUpdates(updates: () -> Void, animated: Bool) {
public func performBatchUpdates(updates: () -> Void, animated: Bool, completion: @escaping () -> Void) {
guard let base = self.base else {
return
}
base.performBatchUpdates(updates)
base.performBatchUpdates(updates, completion: { _ in completion() })
}
public func reloadData() {

View File

@@ -98,7 +98,7 @@ public protocol DiffableDataSourceTarget {
/**
Animates multiple insert, delete, reload, and move operations as a group.
*/
func performBatchUpdates(updates: () -> Void, animated: Bool)
func performBatchUpdates(updates: () -> Void, animated: Bool, completion: @escaping () -> Void)
/**
Reloads all sections and items.
@@ -114,9 +114,15 @@ extension DiffableDataSource.Target {
using stagedChangeset: Internals.DiffableDataUIDispatcher<O>.StagedChangeset<C>,
animated: Bool,
interrupt: ((Internals.DiffableDataUIDispatcher<O>.Changeset<C>) -> Bool)? = nil,
setData: (C) -> Void
setData: (C) -> Void,
completion: @escaping () -> Void
) {
let group = DispatchGroup()
defer {
group.notify(queue: .main, execute: completion)
}
if self.shouldSuspendBatchUpdates, let data = stagedChangeset.last?.data {
setData(data)
@@ -133,6 +139,7 @@ extension DiffableDataSource.Target {
self.reloadData()
return
}
group.enter()
self.performBatchUpdates(
updates: {
@@ -206,7 +213,8 @@ extension DiffableDataSource.Target {
)
}
},
animated: animated
animated: animated,
completion: group.leave
)
}
}

View File

@@ -59,16 +59,14 @@ extension Internals {
Target,
StagedChangeset<[Internals.DiffableDataSourceSnapshot.Section]>,
@escaping ([Internals.DiffableDataSourceSnapshot.Section]) -> Void
) -> Void,
completion: @escaping () -> Void
) -> Void
) {
self.apply(
.init(),
target: target,
animatingDifferences: animatingDifferences,
performUpdates: performUpdates,
completion: completion
performUpdates: performUpdates
)
}
@@ -80,8 +78,7 @@ extension Internals {
Target,
StagedChangeset<[Internals.DiffableDataSourceSnapshot.Section]>,
@escaping ([Internals.DiffableDataSourceSnapshot.Section]) -> Void
) -> Void,
completion: @escaping () -> Void
) -> Void
) {
self.dispatcher.dispatch { [weak self] in
@@ -112,7 +109,6 @@ extension Internals {
#if canImport(QuartzCore)
CATransaction.begin()
CATransaction.setCompletionBlock(completion)
if !animatingDifferences {
@@ -122,11 +118,9 @@ extension Internals {
CATransaction.commit()
#else
performDiffingUpdates()
completion()
#endif