deep-linking-sample/Apps/Wikipedia/WMF Framework/Remote Notifications/Operations/RemoteNotificationsMarkAllAsReadOperation.swift

39 lines
1.1 KiB
Swift
Raw Normal View History

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)
}
}
}
}