39 lines
1.1 KiB
Swift
39 lines
1.1 KiB
Swift
|
import Foundation
|
||
|
|
||
|
class RemoteNotificationsMarkAllAsReadOperation: RemoteNotificationsProjectOperation {
|
||
|
|
||
|
override func execute() {
|
||
|
|
||
|
// optimistically mark in database first for UI to reflect, then in API.
|
||
|
|
||
|
let backgroundContext = modelController.newBackgroundContext()
|
||
|
self.modelController.markAllAsRead(moc: backgroundContext, project: project) { [weak self] result in
|
||
|
guard let self = self else {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
switch result {
|
||
|
case .success:
|
||
|
|
||
|
self.apiController.markAllAsRead(project: self.project) { [weak self] error in
|
||
|
guard let self = self else {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if let error = error {
|
||
|
self.finish(with: error)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
self.finish()
|
||
|
}
|
||
|
|
||
|
case .failure(let error):
|
||
|
self.finish(with: error)
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|