mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
32 lines
867 B
Swift
32 lines
867 B
Swift
|
|
||
|
final class ThreadUpdateBatcher {
|
||
|
private var threadIDs: Set<String> = []
|
||
|
|
||
|
private lazy var timer = Timer.scheduledTimer(withTimeInterval: 0.25, repeats: true) { [weak self] _ in self?.touch() }
|
||
|
|
||
|
static let shared = ThreadUpdateBatcher()
|
||
|
|
||
|
private init() {
|
||
|
DispatchQueue.main.async {
|
||
|
SessionUtilitiesKit.touch(self.timer)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
deinit { timer.invalidate() }
|
||
|
|
||
|
func touch(_ threadID: String) {
|
||
|
threadIDs.insert(threadID)
|
||
|
}
|
||
|
|
||
|
@objc private func touch() {
|
||
|
let threadIDs = self.threadIDs
|
||
|
self.threadIDs.removeAll()
|
||
|
Storage.write { transaction in
|
||
|
for threadID in threadIDs {
|
||
|
guard let thread = TSThread.fetch(uniqueId: threadID, transaction: transaction) else { return }
|
||
|
thread.touch(with: transaction)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|